2012-01-12 109 views
1

我有一个带96个插槽的滑块,我需要在60秒内将滑块逐步从0移动到95。我应该用间隔(60/96)和96次重复使用NSTimer,还是有更好的解决方案?在一定时间内移动滑块

回答

1

这可能是最好的方法。 NSTimer应该在该时间间隔内表现得相当一致,当它每1/10秒或更快地调用它时,它开始变得不可靠。

然而,如果稍微解释一下它并不完全表现为你会希望:

这不会是完美的,因为NSTimer没有它的Tick事件字面上每间隔。相反,NSTimer处于其线程运行循环的摆布之中,直到它的时间间隔到期后才能调用@selector方法。然后将它与调用屏幕更新并不是锁定步骤相结合。

它的准确性主要取决于你在运行循环中做了些什么......如果你的设备的小脑中没有太多的事情发生,那么你的滑块应该像你希望的那样移动。

编辑:你也可以考虑一个更长间隔的NSTimer,并使用UIView的animateWithDuration ...方法使它看起来平滑吗?

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 
+0

NSTimer没有'isinValid'方法。 – Rengers 2012-08-31 13:49:42