UISlider不会自动重绘

时间:2011-08-05 07:15:42

标签: iphone objective-c cocoa-touch ipad uislider

我的应用程序上有一个UISlider,我有时需要不仅更新它的值,还要更新它的minimumValue。值已更改但如果我调用setValue方法或为我的滑块指定新值,则它具有新值,但滑块不会将其自身重新绘制到此新值的位置。我怎么重新粉刷它? 这是我更改minimumValue的一段代码。

if([array count] < 50)
    [sliderTamanyo setMinimumValue:2];
else if([array count] < 200)
    [sliderTamanyo setMinimumValue:3];
else
    [sliderTamanyo setMinimumValue:4];
if(sliderTamanyo.value < sliderTamanyo.minimumValue)
     self.sliderTamanyo.value = self.sliderTamanyo.minimumValue;     
[self.sliderTamanyo setNeedsDisplay];                

2 个答案:

答案 0 :(得分:2)

由于UISlider继承自UIView,您不能在更新值后调用[yourSlider setNeedsDisplay];

这将强制UISlider实例完全重绘自身,因此可能会考虑您设置的新值。

编辑:

UISlider中嵌入UIBarButtonItem时似乎存在一些常见问题 - 有关详细信息,请参阅this Stack Overflow question

答案 1 :(得分:0)

我已经通过删除滑块并将其添加到工具栏来解决了这个问题。我用过这段代码:

NSMutableArray *items = [NSMutableArray arrayWithArray:self.toolbar.items];
id slider = [items lastObject]; 
[items removeLastObject];
self.toolbar.items = items;    
[items addObject:slider];
self.toolbar.items = items;

我使用id代替UISlider恢复了我的滑块,因为该滑块位于UIBarButtonItem