最近算是跟定时器干上了,因为项目需求,我需要在不同的界面放置定时器倒计时,例如
感兴趣的可以去这里看另外一种情况如何优雅的实现 电商类促销倒计时(1天:12:时33:分)
废话不多说直接上代码
首先在需要定时器的地方创建定时器
以下代码我是在cell中的setModel方法里面创建的NSTimer,因为我需要拿到时间的数据来判断cell是不是需要创建定时器
每次给NSTimer复制前一定要把先前的定时器移除掉[self removeTimer]
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(countDownAction) userInfo:nil repeats:YES]; //启动倒计时后会每秒钟调用一次方法 countDownAction
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
[self removeTimer];
self.timer = timer;
实现定时器每秒的方法
-(void) countDownAction{
//倒计时-1
self.second -= 1;//second是后台传来的时间
//当倒计时到0时,做需要的操作
if (self.second == 0){
//隐藏显示时间的Label
self.promotionTime.hidden = YES;
//移除定时器
[self removeTimer];
}else{
if (self.second<0) {
self.promotionTime.hidden = YES;
[self removeTimer];
return;
}
// 赋值(每次定时器都会到这复制给timeLabel)
self.promotionTime.text = [NSString stringWithFormat:@"%02zd:%02zd:%02zd", self.second/3600, (self.second/60)%60, self.second%60];
}
}
附上removeTimer方法
#pragma mark - 注销定时器
- (void)removeTimer
{
[self.timer invalidate];
self.timer = nil;
}
如果还不放心定时器销毁问题的小伙伴看这里
- (void)dealloc {
[self removeTimer];
self.timer = nil;
}
编码的路上与大家同行,记录点滴, 欢迎各位大牛的指正,本人会虚心受教,谢谢!!!