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。隐藏在其他视图元素后面的弹出窗口

iPhone:编程 UISlider 以定位在点击的位置

如何在使用 UISlider 更改音量时隐藏 Iphone 音量框?

iPhone 的自定义 UISlider

如何在 iphone 中使用 uislider 设置音量控制?

iphone/ipad 自定义 UISlider 控制器