2013-04-10 4 views
0

Я пытаюсь изменить ход линии с UISlider, но это не сработает. Значение ползунка в порядке, но ничего не изменилось. Ползунок находится на дисплее и запускается и возвращает значение на этикетке. Я думаю, что функция нарисована на первой нагрузке и остановлена. Но я не знаю, как исправить эту проблему.Изменение CGContextSetLineWidth с uislider

Мой .h файл:

#import <UIKit/UIKit.h> 

@interface Draw : UIView { 
    IBOutlet UISlider *slider; 
    IBOutlet UILabel *label; 
} 

- (IBAction)sliderValueChanged:(id)sender; 

@end 

.m Мой файл:

#import "Draw.h" 

@implementation Draw 


- (IBAction) sliderValueChanged:(UISlider *)sender { 
    label.text = [NSString stringWithFormat:@"%.1f", slider.value]; 
    NSLog(@"slider value = %f", sender.value); 

} 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 




    } 
    return self; 
} 



- (void)drawRect:(CGRect)rect; 
{ 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 0.0, 1.0); 
    CGContextBeginPath(context); 
    CGContextMoveToPoint(context, 50.0, 50.0); 
    CGContextAddLineToPoint(context, 250.0, 100.0); 
    CGContextAddLineToPoint(context, 250.0, 350.0); 
    CGContextAddLineToPoint(context, 50.0, 350.0); 
    CGContextClosePath(context); 
    CGContextSetLineWidth(context, slider.value); 
    CGContextStrokePath(context); 

} 

@end 

ответ

1

В вашем методе - (IBAction) sliderValueChanged:(UISlider *)sender вы должны вызвать [self setNeedsDisplay] сообщить мнение о том, что содержание должно быть перерисованы.

+0

ya, правый совет, спасибо! – greenchapter

0

Вы должны сообщить пользовательскому интерфейсу, что его необходимо перерисовать сообщением -[UIView setNeedsDisplay]. В противном случае он не знает, что что-то, связанное с тем, как выглядит изображение, изменилось

- (IBAction) sliderValueChanged:(UISlider *)sender { 
    label.text = [NSString stringWithFormat:@"%.1f", slider.value]; 
    NSLog(@"slider value = %f", sender.value); 
    [self setNeedsDisplay]; 
}