【发布时间】:2011-08-01 21:07:10
【问题描述】:
如何在 UISlider 的 minimum 和 maximumValues 更改后(在运行时)更新其 value 属性?
考虑以下代码:
1 UILabel 连接到一个 IBOutlet - 标签
1 个 UISlider(默认设置 min=0,max=1)连接到 IBOutlet - 滑块和 IBAction - valueChanged
1 按钮连接到 IBAction - buttonTouch
以及以下两个 IBAction 实现:
- (IBAction)valueChanged:(id)sender {
label.text=[NSString stringWithFormat:@"%f",slider.value];
}
- (IBAction)buttonTouch:(id)sender {
slider.maximumValue=4;
slider.minimumValue=2;
label.text=[NSString stringWithFormat:@"%f",slider.value];
}
当我将滑块移动到某个位置时,它会正确更新。
但是,当我通过触发 buttonTouch IBAction 更改滑块的最小值和最大值时,slider.value 属性不会改变 - 它仍然显示旧值(介于 0 和 1 之间)。因此更改最小值和最大值属性不会对 value 属性产生直接影响。
之前:
最小值=0 值=0.5 最大值=1
之后:
min=2 value=0.5 max=4
这应该是 3!
我想您可以根据您对值的了解来计算新值,旧设置的最小值和最大值以及新设置的最小值和最大值,但这似乎不是一个好的解决方案(请参见下面的公式)
newValue = oldvalue / (oldmax - oldmin) * (newmax - newmin) + newmin
【问题讨论】:
标签: iphone objective-c cocoa-touch uislider