iPhone:UISlider动态更改最大值

iPhone:UISlider动态更改最大值,iphone,xcode,uislider,Iphone,Xcode,Uislider,当我更改UISlider的maximumValue属性时,它的磨砂不会重新定位。我通过擦洗UISlider A动态更改UISlider B的maximumValue属性。因此,当UISlider A更改为例如1时,UISlider B的maximumValue+=1。UISlider B应该自动更新其擦洗位置,但不会。如果我按下UISlider B scrub,它会得到更新 解决方案是什么?如果要更改滑块拇指的值,需要使用: - (void)setValue:(float)value anima

当我更改UISlider的maximumValue属性时,它的磨砂不会重新定位。我通过擦洗UISlider A动态更改UISlider B的maximumValue属性。因此,当UISlider A更改为例如1时,UISlider B的maximumValue+=1。UISlider B应该自动更新其擦洗位置,但不会。如果我按下UISlider B scrub,它会得到更新


解决方案是什么?

如果要更改滑块拇指的值,需要使用:

- (void)setValue:(float)value animated:(BOOL)animated

maximumValue仅更改thumb可以表示的上限值

我有一个确切的问题:当maximumValue以编程方式设置时,UISlider thumb不会在轨迹上重新定位自己,即使您显式调用setValue。例如:

// Setup:
UISlider *a = [[UISlider alloc] init];
a.minimumValue = 1.00;
a.maximumValue = 100.00;
[a setValue: 50.00];

/* CORRECT: The thumb is in the centre of the track, at position "50.00":

1 --------------------------- () --------------------------- 100
                         a.value == 50
*/ 

// Set maximumValue programmatically:
[a setMaximumValue: 1000.00];

/* INCORRECT: The thumb is still in the centre of the track: position "500.00":

1 --------------------------- () --------------------------- 1000
                         a.value == 50
    |<---- It should be here (!)
*/ 

// Call setValue explicitly, to no avail:
[a setValue: 50.00];

/* INCORRECT: The thumb is still in the centre of the track: position "500.00":

1 --------------------------- () --------------------------- 1000
                         a.value == 50
    |<---- It should be here (!)
*/ 
如果有人知道一个更好的方法,我很乐意阅读。(-):

[a setValue:a.value+1 animated:NO];
[a setValue:a.value-1 animated:NO];

/* (The thumb is now at position "50.00"):

1 -- () ---------------------------------------------------- 1000
  a.value == 50
*/