如何使用IOS 6以设定的持续时间以编程方式移动滑块?

时间:2013-06-19 17:32:05

标签: iphone ios6 uislider

我有一个带有UISlider的iPhone应用程序。当我的用户按下播放按钮时,我希望我的滑块从值1缓慢移动到值100.滑块在录制期间滑动,当我的用户按下播放按钮时播放。 / p>

我查看了UISlider文档。唯一可能对我有帮助的方法是setValue:animated:方法。但是,当动画=是时,滑块移动到100的速度太快了。

有什么方法可以减慢它的速度吗?

2 个答案:

答案 0 :(得分:5)

你可以让UIView为自己设置动画,而不是自己编写补间或编写回调。例如,这会将滑块设置为在5秒内从其当前值开始的最大值。而且比自己尝试做得更顺畅。

- (IBAction)play:(id)sender {
    [sender setEnabled:NO];
    [UIView animateWithDuration:5.0 animations:^{
        self.slider.value = self.slider.maximumValue;
    }];
}

如果你不相信我 - 这是sample project that you can download为你自己看的:

答案 1 :(得分:0)

您应该使用属于NSTimerscheduledTimerWithTimeInterval:target:selector:userInfo:repeats:来更慢地增加滑块。增加每个刻度线上滑块的位置。像这样:

NSTimer *timerForSlider = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES];

-(void)updateSlider {
    [slider setValue:slider.value+1];
    if(slider.value == MAXIMUM_VALUE) {
        [timerForSlider invalidate];
    }
}