美文网首页
iOS 开发 毫秒计时器

iOS 开发 毫秒计时器

作者: 强子ly | 来源:发表于2019-06-15 13:01 被阅读0次
毫秒计时器.gif

项目需要实现一个类似于这样的毫秒计时器功能,原来想着用:毫秒 -> 秒 -> 分钟,分用三个控件,后来做个优化一个控件搞定,简单记录一下。


  • API调用
[_timer setFireDate:[NSDate date]];
[_timer setFireDate:[NSDate distantFuture]];
  • 具体代码实现
7B4B4EB592A1B625E540262208B6AF0D.jpg
@interface ViewController () {
    NSInteger _minute;         // 分钟
    NSInteger _second;         // 秒
    NSInteger _millisecond;    // 毫秒
    BOOL _isStop;
}
@property (nonatomic, strong) NSTimer *timer;
@property (weak, nonatomic) IBOutlet UILabel *timeLabel;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    _isStop = YES;
    self.timer = [NSTimer scheduledTimerWithTimeInterval:0.01
                                                  target:self
                                                selector:@selector(startTimer)
                                                userInfo:nil
                                                 repeats:YES];
    // 让定时器暂停
    [_timer setFireDate:[NSDate distantFuture]];
}

- (void)startTimer{
    _millisecond ++;
    if(_millisecond == 100){
        _second ++;
        _millisecond = 0;
    }
    if (_second == 60) {
        _minute ++;
        _second = 0;
    }
    self.timeLabel.text = [NSString stringWithFormat:@"%02ld:%02ld:%02ld", _minute, _second, _millisecond];
}

// 开始/停止
- (IBAction)start:(id)sender {
    UIButton *btn = (UIButton *)sender;
    if (_isStop) {
        [btn setTitle:@"停止" forState:UIControlStateNormal];
        [_timer setFireDate:[NSDate date]];
        _isStop = NO;
    } else {
        [btn setTitle:@"开始" forState:UIControlStateNormal];
        [_timer setFireDate:[NSDate distantFuture]];
        _isStop = YES;
    }
}

// 重置
- (IBAction)reset:(id)sender {
    _millisecond = 0;
    _second = 0;
    _minute = 0;
    self.timeLabel.text = [NSString stringWithFormat:@"%02ld:%02ld:%02ld", _millisecond, _second, _minute];
}

@end

相关文章

  • iOS 开发 毫秒计时器

    项目需要实现一个类似于这样的毫秒计时器功能,原来想着用:毫秒 -> 秒 -> 分钟,分用三个控件,后来做个优化一个...

  • iOS开发之UITableView中计时器的几种实现方式

    iOS开发之UITableView中计时器的几种实现方式 iOS开发之UITableView中计时器的几种实现方式

  • iOS-多线程(四)-GCD定时器

    日常的开发中,我们经常会用到计时器。在iOS中,有三种计时器,NSTimer、CADisplayLink、disp...

  • Timer拾遗

    在平时的开发中,计时器是一个常用的功能,iOS常用的计时器有三种,分别是NSTimer、CADisplayLink...

  • Timer

    qml的Timer组件是一个简单的计时器。 interval 是计数的时间,单位是毫秒,默认1000毫秒。 rep...

  • 微信小程序时间差

    时间戳时间 4小时触发一次,在这个时间内不会触发 字符串时间 这个是毫秒 毫秒转天 计时器setInterval(...

  • iOS 基于消息转发机制实现弱引用计时器

    iOS 基于消息转发机制实现弱引用计时器 在iOS开发中,我们经常使用NSTimer.常使用下列几个方法: 其中N...

  • js中setInterval和setTimeout

    计时器(周期更新):window.setInterval(执行的函数名,间隔时间(单位是毫秒))setInterv...

  • 运行循环

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

  • ios开发-NSTimer计时器

    作用:用来定时重复执行某件事件注意:计时器需要放入到runloop中才能有用 NSTimer常用方法 //以上2个...

网友评论

      本文标题:iOS 开发 毫秒计时器

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