美文网首页iOS开发
NSTimer 暂停计时和恢复计时准确方法

NSTimer 暂停计时和恢复计时准确方法

作者: ruixinjia | 来源:发表于2019-08-12 10:32 被阅读0次

场景描述

使用NSTimer计时,到某个页面停止计时,退出这个页面接着暂停的时间继续计时,到达预定时间完成某些操作。

初始遇见的问题

在网上使用通用方法
-(void)pauseTimer{
[self setFireDate:[NSDate distantFuture]];
}

-(void)resumeTimer{
[self setFireDate:[NSDate date]];
}
@end
使用这种方法会导致暂停计时成功,但恢复计时的时候不是从上次暂停时间开始计算的,而是立即计时结束,执行方法。

正确做法

-(void)pauseTimer{
    if(self.timer){
       self.pauseStart = [NSDate dateWithTimeIntervalSinceNow:0];
        self.previousFireDate = [self.timer fireDate];
        [self.timer setFireDate:[NSDate distantFuture]];
    }
}

-(void)resumeTimer{
    if(self.timer){
        float pauseTime = -1*[self.pauseStart  timeIntervalSinceNow];
        [self.timer setFireDate:[NSDate dateWithTimeInterval:pauseTime sinceDate:self.previousFireDate]];
  }
}
这种做法可以从上次暂停的时间继续计时,达到预定时间后才执行方法。

相关文章

  • NSTimer 暂停计时和恢复计时准确方法

    场景描述 使用NSTimer计时,到某个页面停止计时,退出这个页面接着暂停的时间继续计时,到达预定时间完成某些操作...

  • 2--NSTimer

    大纲: 创建计时器 暂停 恢复 销毁 开发小技巧 一、创建计时器 二、暂停 三、恢复 四、销毁 五、开发小技巧

  • NSTimer设置开启、暂停、恢复、移除

    1)问题描述 NSTimer 自带的方法中是没有提供暂停和恢复的方法; 2)解决方案 NSTimer 有个方法是 ...

  • van-count-down 倒计时相关问题

    1. 倒计时重置问题 背景:业务需要在开启倒计时、暂停、恢复倒计时实时判断是否展示倒计时,并重置倒计时 问题:直接...

  • IOS中定时器NSTimer的开启与关闭

    调用一次计时器方法: myTimer = [NSTimer scheduledTimerWithTimeInter...

  • NStimer计时器值得注意的点

    在使用NStimer的时候,有时候会发现计时的不太准确主要是因为NSTimer加在main runloop中,模式...

  • Chronometer计时器暂停问题

    问题描述: 当通过stop()方法实现计时器暂停时,在通过start()方法继续计时的时候,会出现计时器显示的时间...

  • CADisplayLink 详解

    CADisplayLink 是一种计时器 常用的计时器有CADisplayLink和NSTimer CADispl...

  • GCD计时器

    计时器的方法是用: 计时器方法有多种,其中一个可以使用GCD,也可以用NSTimer,现在介绍GCD的方法(笔者认...

  • 运行循环

    iOS运行循环 NSTimer使用 停止计时器 可重用计时器

网友评论

    本文标题:NSTimer 暂停计时和恢复计时准确方法

    本文链接:https://www.haomeiwen.com/subject/teeyjctx.html