UIView animateWithDuration不能与UISlider一起使用

时间:2013-12-12 09:44:56

标签: ios uislider uianimation

我希望滑块缓慢设置值,为此我使用此代码

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

但这不起作用。 请帮帮我。

2 个答案:

答案 0 :(得分:4)

改为使用[self.slider setValue:(float)val animated:YES];

答案 1 :(得分:0)

我发现动画不起作用是在视图仍在加载时安排动画。所以不是这个(没有动画):

-(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表示动画将安排在下一个runloop。