iPhone 中的 UISlider 限制
Posted
技术标签:
【中文标题】iPhone 中的 UISlider 限制【英文标题】:UISlider limitations in IPhone 【发布时间】:2013-11-15 14:13:47 【问题描述】:如果我在 UISlider Control 中设置"MinimumValue = 0" & "MaximimValue=2000"
,那么我将无法设置确切的值。在释放滑块拇指图像时,它会将值更改为+ or - 5 to10
。我的滑块width = 225px
。
例如:- 如果我尝试将滑块值设置为 100
,那么在释放滑块拇指时,它会显示类似 105 or 95
的结果。
Code
IBOutlet UISlider * slider;
//"Slider" Object attached using XIB(.NIB)
slider.minimumValue = 0;
slider.maximumValue = 100;
//Attached Below Method Using XIB(.NIB) with "value Changed" event.
-(IBAction)slider_Change:(id)sender;
//Assigning value to UITextField
textFiled.text = [NSString stringWithFormat:@"%d",(((int) (slider.value)) * 20)];
【问题讨论】:
显示滑块的代码 @user2277872 我在那里添加了代码。 【参考方案1】:因为您已将滑块范围设置得如此之大,屏幕上的每个像素都相当于 8.888。
2000 / 255 = 8.8888888889
要获得 1 的刻度,您需要将滑块移动 1/8 个像素(这是不可能的)。
替代方案是:
-
拉长滑块
缩小滑块范围
使用不同的控件UIStepper
【讨论】:
感谢您的回答。替代方案(1)和(2)我不能按要求做。您认为我可以使用其他任何 UI 方式吗?【参考方案2】:除了@rjstelling 的回答之外,似乎您正在尝试将滑块的值转换为整数值。我相信滑块的默认值是双精度值,这会导致值在增加时变得四舍五入,因为不会有十进制值。除非是必需的,否则看看是否可以使用双精度。
textFiled.text = [NSString stringWithFormat:@"%f",(slider.value * 20.0)];
或者如果出于某种原因您想限制可以使用的小数位数,您可以这样做:
textField.text = [NSString stringWithFormat:@"%.1f", slider.value * 20.0];
这会给你一个小数的结果,比如 1.5 作为你的答案。
你可以用小数做任何事情,甚至可以做 %1.2f、%4.3f 甚至 %10.4f,
这些将产生如下结果:0.34、0012.446,以及像 000000345.1111 这样的极端结果
希望对你有帮助
【讨论】:
以上是关于iPhone 中的 UISlider 限制的主要内容,如果未能解决你的问题,请参考以下文章
带有视觉跟踪弹出视图的 UISlider。隐藏在其他视图元素后面的弹出窗口
如何在使用 UISlider 更改音量时隐藏 Iphone 音量框?