2011-02-25 94 views
0

我有一個int值代表一個事件倒計時(正在顯示的視圖)。目前,我這樣做:使用NSTimer創建倒計時

- (void) buttonTapped:(id)sender { 
    [self performSelector:@selector(displayView) afterDelay:countdownValue]; 
} 

我想要做的是以下...

當按鈕被竊聽,改變色調我的導航欄,以紅,黃,綠顏色的比例,直到倒數到期,然後顯示視圖。

例如,如果我的倒計時是3秒,每種顏色一秒,如果是5秒,每種顏色1.666。

我可以使用NSTimer來安排嗎?

顯示視圖後,計時器將需要無效。

感謝

回答

3
float count_down = 5.0; 
[NSTimer scheduledTimerWithTimeInterval: count_down*(1.0/3.0) target: self 
           selector: @selector(changeToRed:) userInfo: nil repeats: NO]; 
[NSTimer scheduledTimerWithTimeInterval: count_down*(2.0/3.0) target: self 
           selector: @selector(changeToGreen:) userInfo: nil repeats: NO]; 
[NSTimer scheduledTimerWithTimeInterval: count_down target: self 
           selector: @selector(changeToBlue:) userInfo: nil repeats: NO]; 

而且回調(做你想做的存在):

-(void) changeToRed:(NSTimer*) t { 
    NSLog(@"red"); 
} 

-(void) changeToGreen:(NSTimer*) t { 
    NSLog(@"green"); 
} 

-(void) changeToBlue:(NSTimer*) t { 
    NSLog(@"blue"); 
} 
+0

有一個微妙的好處多計時器的方法(與一個計時器反覆火災)。使用這個,你不會積累漂移誤差。 – bbum 2011-02-25 17:29:42

+0

這適用於我,但點擊按鈕和色彩變爲紅色之間有一點點延遲,這是因爲第一個定時器在一秒鐘之後開始閃光?謝謝 – joec 2011-02-26 11:57:07

+0

是的。如果您希望立即啓動定時器,請將第一個時間間隔設置爲0。 – Max 2011-02-26 12:34:09