2013-07-25 28 views
0

我有一個關於UISliders的問題IOS以及您可以在多大程度上對其進行自定義?
我想實現一個滑塊,如iPhone中的「解鎖滑塊」。
但似乎IOS沒有提供任何「標準」方式來實現這樣的滑塊?你可以像iPhone中的「解鎖滑塊」一樣定製UISlider嗎?

是否可以實現標準的UISlider並將其設置爲min.value(0.0)和maximum.value(0.5)。如果滑塊「擊中」一個大於(0.01)的值,它應該自動回到最小值(0.0)。
如果它達到最大值(0.5),開始一個事件,然後自動拉回min.value?

所有幫助表示讚賞!

+0

yes of course of can be done。 UISlider繼承自UIControl類。您可以繼承UIControl並開始製作您的自定義滑塊。 –

+0

請參閱:http://www.sitepoint.com/wicked-ios-range-slider-part-one/ 在這裏你可以看到如何創建一個雙向滑塊,但你可以學習很多東西並實現你的習慣通過它後滑塊。 –

+0

這裏是一個不錯的答案:-http://stackoverflow.com/questions/8287413/custom-uislider-avoid-updating-when-dragging-outside –

回答

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 
} 
相關問題