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 に答える