UIView animateWithDuration不能与UISlider一起使用

我想滑块设置缓慢的价值,为此我使用这个代码

[UIView animateWithDuration:2.0 animations:^{ [self.slider setValue:(float)val]; }]; 

但是这不起作用。 请帮我一下

使用[self.slider setValue:(float)val animated:YES]; 代替。

我发现的是,animation将不起作用的animation是在视图仍在加载时计划的。 所以不是这个(不animation):

 -(void)animateSlider: duration:(NSTimeInterval)duration { _slider.maximumValue = duration; _slider.minimumValue = 0; [UIView animateWithDuration:duration delay:0 options: UIViewAnimationOptionCurveLinear animations:^{ [_slider setValue:duration animated:YES]; } completion:^(BOOL finished){} ]; } 

我做了以下,其中animateSlider是一个内部方法:

 -(void)animateSlider { float value = _slider.maximumValue; [UIView animateWithDuration:value delay:0 options: UIViewAnimationOptionCurveLinear animations:^{ [_slider setValue:value animated:YES]; } completion:^(BOOL finished){} ]; } -(void)animateSlider: duration:(NSTimeInterval)duration { _slider.maximumValue = duration; _slider.minimumValue = 0; [self performSelector:@selector(animateSlider) withObject:nil afterDelay:0]; } 

afterDelay:0意味着animation将被安排在下一个循环中。