0

について質問がUISlidersありIOSますが、どの程度カスタマイズできますか? iPhoneの「ロック解除スライダー
のようなスライダーを実装したいと考えています。 しかし、IOS はこのようなスライダーを実装するための「標準的な」方法を提供していないようです。

標準の UISlider を実装して、min.value (0.0) と maximum.value (0.5) に設定することは可能ですか。スライダーが (0.01) より大きい値に「ヒット」すると、自動的に最小値 (0.0) に戻されます。
最大値 (0.5) に達すると、イベントが開始され、自動的に min.value に戻されますか?

すべての助けに感謝します!

4

1 に答える 1

3

これを試して。私は自分のプロジェクトでこれを使用します

Slider.h

@class Slider;
@protocol SliderDelegate <NSObject>
@required
- (void) slideEnd;
@end
@interface Slider : UISlider
@property (nonatomic, weak) id<SliderDelegate> delegate;

Slider.m

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
if (self) {
    [self setMinimumTrackImage:YOUR_MINIMUM_TRACK_IMG forState:UIControlStateNormal];
    [self setMaximumTrackImage:YOUR_MAXIMUM_TRACK_IMG  forState:UIControlStateNormal];
    [self setThumbImage:YOUR_THUMB_IMAGE];
    self.minimumValue = 0.0;
    self.maximumValue = 1.0;
    self.value = 0.0;
    [self addTarget:self action:@selector(moved:) forControlEvents:UIControlEventTouchUpInside];
    [self addTarget:self action:@selector(moved:) forControlEvents:UIControlEventTouchUpOutside];
}
    return self;
}

- (void) moved:(UISlider *) sender
{
    if (self.value != 1.0) {
        [self setValue: 0 animated: YES];

    } else {
        [[self delegate] slideEnd];
        [self setValue: 0 animated: YES];
    }
}

次のように実装します。

[self setSlider:[[Slider alloc] initWithFrame:CGRectMake(645, 25, 120, 50)]];
[[self view] addSubview:[self slider]];
[[self view] bringSubviewToFront:[self slider]];
[[self slider] setDelegate:self];

デリゲート メソッドを実装することを忘れないでください。

- (void)slideEnd {
    // Things you want to do when slide ends
}
于 2013-07-25T13:20:16.950 に答える