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将被安排在下一个循环中。