司小文的专栏

总会有人走的很慢,幸运的是我们从不停息~

iOS_NSTimer倒计时实例

这两天用到了,很久前封的一个NSTimer类,整理了下和小伙伴们一起分享下。

2016-09-09 NSTimer的补充

关于NSTimer的定义,官方给出解释是“A timer provides a way to perform a delayed action or a periodic action. The timer waits until a certain time interval has elapsed and then fires, sending a specified message to a specified object. ” 翻译过来就是timer就是一个能在从现在开始的后面的某一个时刻或者周期性的执行我们指定的方法的对象。

而我们还应该注意, timer不是一种实时的机制,会存在延迟,而且延迟的程度跟当前线程的执行情况有关(比如大数据运算时)。

------------------------------------------------------------------------------------------


这里是核心代码:

<span style="font-family:Microsoft YaHei;font-size:14px;">//换算成倒计时时间
- (void)setTimeLabelbyday:(NSInteger)day andhour:(NSInteger)hour andmin:(NSInteger)min andsecond:(NSInteger)second{
    self.lastTime=((day*24+hour)*60+min)*60+second;
    
    self.str_Time=[NSString stringWithFormat:@"%02ld:%02ld:%02ld",self.lastTime/3600%24,self.lastTime/60%60,self.lastTime%60];
    
    self.myTime=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timeMove) userInfo:nil repeats:YES];
    [[NSRunLoop mainRunLoop] addTimer:self.myTime forMode:NSRunLoopCommonModes];
}

//计时方法
- (void)timeMove{
    if (self.lastTime==0) {
        [self timeStop];
        if (self.block_TimeUp) {
            self.block_TimeUp();
        }
    }else{
        //递减
        self.lastTime--;
        //新的字符串内容
        lab.text = [NSString stringWithFormat:@"%02ld:%02ld:%02ld",self.lastTime/3600%24,self.lastTime/60%60,self.lastTime%60];
     }
}

//开始倒计时
- (void)timeStart{
    [self.myTime setFireDate:[NSDate distantPast]];
}

//停止倒计时
- (void)timeStop{
    [self.myTime setFireDate:[NSDate distantFuture]];
}
</span>


demo链接:

倒计时demo (提取码:7896)



感谢观看,学以致用更感谢~



阅读更多
版权声明:本文为博主原创文章,转载时请声明:http://blog.csdn.net/siwen1990 转载 https://blog.csdn.net/siwen1990/article/details/51548299
文章标签: NSTimer 倒计时
个人分类: iOS-功能
上一篇iOS_UITextView的整理
下一篇NSRunLoop浅谈
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭