0

我正在尝试用 更改线条笔划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
4

2 回答 2

1

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

于 2013-04-10T10:49:33.700 回答
0

你需要告诉 UI 它需要用-[UIView setNeedsDisplay]消息重绘。否则,它不知道与视图绘制方式相关的任何内容都发生了变化

- (IBAction) sliderValueChanged:(UISlider *)sender {
    label.text = [NSString stringWithFormat:@"%.1f", slider.value];
    NSLog(@"slider value = %f", sender.value);
    [self setNeedsDisplay];
}
于 2013-04-10T10:49:34.140 回答