2012-01-12 75 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