使用uislider更改CGContextSetLineWidth

时间:2013-04-10 10:46:31

标签: ios objective-c uislider

我正在尝试使用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

2 个答案:

答案 0 :(得分:1)

在方法- (IBAction) sliderValueChanged:(UISlider *)sender中,您应该调用[self setNeedsDisplay]来通知视图需要重新绘制内容。

答案 1 :(得分:0)

您需要告诉用户界面需要使用-[UIView setNeedsDisplay]消息重绘它。否则,它不知道与绘制视图的方式有关的任何内容都已更改

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