您可以像iPhone中的“解锁滑块”一样自定义UISlider吗?

时间:2013-07-25 12:49:31

标签: iphone ios uislider

我对UISliders中的IOS有疑问,您可以在多大程度上自定义它们? 我想在 iPhone 中实现类似“解锁滑块”的滑块。
但似乎IOS没有提供任何“标准”方法来实现这样的滑块?。

是否可以实现标准UISlider并将其设置为min.value(0.0)和maximum.value(0.5)。如果滑块“击中”大于(0.01)的值,则应自动将其拉回到最小值(0.0)。
 如果它达到最大值(0.5),则启动一个事件然后自动拉回到min.value?

感谢所有帮助!

1 个答案:

答案 0 :(得分: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
}