我正在尝试使用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
答案 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];
}