我需要设置UISlider的间隔值。
请帮忙..
答案 0 :(得分:12)
yourSlider.value = x;
你应该真正阅读文档,iOS Developer Center中的许多优秀资源。
修改:关于评论中更具体的问题:
yourSlider.minimumValue = -10;
yourSlider.maximumValue = 10;
[yourSlider addTarget:self action:@selector(roundValue) forControlEvents:UIControlEventValueChanged];
- (void)roundValue{
yourSlider.value = round(yourSlider.value);
}
答案 1 :(得分:5)
灵活的解决方案:
// define MIN_VALUE, MAX_VALUE and INTERVAL somewhere, such as 3, 18 and 3
slider.TouchUpInside += delegate {
touchUpInside();
};
/// <summary>
/// set value to one of intervals
/// </summary>
void touchUpInside(){
// get the nearest interval value
for(int i=MIN_VALUE; i<=MAX_VALUE; i=i+INVERVAL){
if(slider.Value > i && slider.Value < i + INVERVAL){
if(slider.Value - i < i + INVERVAL - slider.Value){
slider.Value = i;
}else{
slider.Value = i + INVERVAL;
}
break;
}
}
}
答案 2 :(得分:4)
我知道这个问题已经过时但我只是想分享一下我是如何做到的。
假设UISlider对象已经初始化,首先,必须设置UISlider对象的最小值和最大值:
mySlider.minimumValue = -2.0;
mySlider.maximumValue = 2.0;
然后,设置将处理滑块中的更改的选择器:
[mySlider addTarget:self action:@selector(sliderDidChangeValue:) forControlEvents:UIControlEventValueChanged];
另外,设置间隔(到属性)。间隔是正的很重要。 (而且,实际上,INTERVAL必须是积极的。)
self.interval = 0.5 //_interval is float
声明方法:
- (void)sliderDidChangeValue:(id)sender
{
UISlider *slider = (UISlider *)sender;
//Round the value to the a target interval
CGFloat roundedValue = [self roundValue:slider.value];
//Snap to the final value
[slider setValue:roundedValue animated:NO];
}
- (float)roundValue:(float)value
{
//get the remainder of value/interval
//make sure that the remainder is positive by getting its absolute value
float tempValue = fabsf(fmodf(value, _interval)); //need to import <math.h>
//if the remainder is greater than or equal to the half of the interval then return the higher interval
//otherwise, return the lower interval
if(tempValue >= (_interval / 2.0)){
return value - tempValue + _interval;
}
else{
return value - tempValue;
}
}
答案 3 :(得分:3)
int sliderValue = kSliderInterval * floor((slider.value / kSliderInterval) + 0.5);
答案 4 :(得分:1)
UISliders
不要“增加”他们的价值,他们会根据他们的触摸方式增加或减少他们的价值。您可以使用这些属性来设置滑块限制:
slider.minimumValue = 0.0;
slider.maximumValue = 0.5;
答案 5 :(得分:0)
我建议将水平放在滑块下方,你想要放置值并设置最大值和最小值,然后可以通过no和point来计算中间值,最后在uilabel中显示值。 希望这会有所帮助
祝你好运