繁体   English   中英

UIView animateWithDuration无法与UISlider一起使用

[英]UIView animateWithDuration not working with UISlider

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

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

但这是行不通的。 请帮帮我。

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

我发现,动画是不起作用的,因为动画是在视图仍加载时安排的。 因此,代替此(不设置动画):

-(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表示将为下一个运行循环安排动画。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM