使用NSTimer创建倒计时

问题描述:

我有一个int值代表一个事件倒计时(正在显示的视图)。目前,我这样做:使用NSTimer创建倒计时

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

我想要做的是以下...

当按钮被窃听,改变色调我的导航栏,以红,黄,绿颜色的比例,直到倒数到期,然后显示视图。

例如,如果我的倒计时是3秒,每种颜色一秒,如果是5秒,每种颜色1.666。

我可以使用NSTimer来安排吗?

显示视图后,计时器将需要无效。

感谢

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