我需要以下滑块控件。
UISlider
不同,在滑块我目前看到以下方法,两者似乎都有其优点和缺点:
UISlider
子类并向其添加新属性和功能UIView
创建了一个自定义控件,其中包含一个UISlider和一个UIProgressBar
,并提供类似于UISlider
的API。我不确定是否有一些方面我错过了。我现在想知道哪种方法最适合我的问题。
答案 0 :(得分:2)
以下几个链接显示了如何创建自定义滑块:
注意:通常,对于创建任何UI自定义控件,您只需从UIControl类继承该类,这将允许您拥有所需类的所有属性以及其他属性......但请小心使用它。 ...
答案 1 :(得分:0)
我认为选项2和3是一个延伸。您可以做的是有一个方法,当滑块值改变时调用该方法,如果用户超出轨道上允许的值,则将其设置为中间的最大值:
使用与此类似的东西声明滑块实例(主要位是添加目标)
UISlider *slider = [[UISlider alloc] initWithFrame:CGRectZero];
slider.continuous = TRUE;
slider.minimumValue = MIN_VALUE; // some min value constant or something?
slider.maximumValue = SLIDER_MAX_VALUE; // some max value constant for the entire slider
slider.value = MIN_VALUE; // or anything else you want
[slider addTarget:self action:@selector(checkBeyondTrack:) forControlEvents:UIControlEventValueChanged];
[self.contentView addSubview:slider];
现在,您需要在与定义滑块
相同的类中使用checkBeyondTrack方法- (void)checkBeyondTrack:(id)sender {
UISlider *slider = sender;
// if we've attempted to go beyond the value allowed
if (slider.value > MAX_TRACK) {
[slider setValue:MAX_TRACK animated:YES];
}
}
每次用户更改滑块的值时,将调用滑块目标方法checkBeyondTrack:
,执行检查并根据需要重置值。