【发布时间】:2010-03-16 21:37:07
【问题描述】:
我有一个 UISlider,它的滑动范围从 0.0 到 1.0。
开箱即用,滑块允许用户以非常多的小数位数滑动,但我只希望我的用户能够为滑块的每个向上或向下“滴答”增加/减少 0.001。
可以这样设置吗?
谢谢!
【问题讨论】:
我有一个 UISlider,它的滑动范围从 0.0 到 1.0。
开箱即用,滑块允许用户以非常多的小数位数滑动,但我只希望我的用户能够为滑块的每个向上或向下“滴答”增加/减少 0.001。
可以这样设置吗?
谢谢!
【问题讨论】:
这个滑块有多大?即使你在横向模式下它跨越了屏幕的整个宽度,0.001 的变化也只有大约半个像素。听起来您只需要将滑块的值(在幕后)四舍五入到您所追求的精度。
【讨论】:
如果是非常简单的事情呢,例如: 一个 3 选项滑块(值为 {0, 1, 2}),连接了一个 IBAction 和一个 IBOutlet。
-(float)roundValue:(float)value{
if(value <= 0.5) return 0;
if(value <= 1.5) return 1;
return 2;
}
-(IBAction)mySliderChanged:(id)sender {
float value = mySliderOutlet.value; // retrieve value via IBOutlet
value = [self roundValue:value];
// Update the slider to 'snap' in final position
[[self mySliderOutlet] setValue:value animated:YES];
}
【讨论】:
这应该可以解决问题:
- (void) getSliderValue:(UISlider *)paramSender{
float increment = 0.001;
float newValue = paramSender.value /increment;
paramSender.value = floor(newValue) * increment;
NSLog(@"Current value of slider is %f", paramSender.value);
}
【讨论】: