我有一个带96个插槽的滑块,我需要在60秒内逐步从0到95移动滑块。我应该使用间隔(60/96)和96次重复的NSTimer还是有更好的解决方案?
答案 0 :(得分:1)
这可能是最好的方法。 NSTimer
应该在该间隔内表现得相当一致,只有在每1/10秒或更快的时间调用它时才开始变得不可靠。
然而,如果它没有像你希望的那样表现出一点解释:
它并不完美,因为NSTimer
每个区间都没有它的嘀嗒事件字面上。更确切地说,NSTimer
受其线程的运行循环的支配,它可能无法调用您的@selector
方法,直到其间隔到期后的一段时间。然后将其与调用屏幕更新结合起来,这些更新也不是锁定步骤。
它的准确性主要取决于你在跑步循环中做的其他事情......如果你的设备的小脑中没有太多的东西,那么你的滑块应该像你希望的那样移动。 / p>
编辑:您也可以考虑使用更长间隔的NSTimer,并使用UIView的animateWithDuration ...方法使其显得平滑?
答案 1 :(得分:1)
aTimer = [NSTimer timerWithTimeInterval:(1.0) target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
NSRunLoop *runner = [NSRunLoop currentRunLoop];
[runner addTimer:aTimer forMode: NSDefaultRunLoopMode];
- (void)timerFired:(NSTimer*)theTimer {
slider.maximumValue=totaltime;
if(slider.value ==totaltime)
{
[theTimer invalidate];
//terminate the loop
}
else
{
slider.value=slider.value+1;
}
}
//timer runs continuously run if condition is true