使用GCD进行倒计时操作
来源:互联网 发布:seo软文免费发布渠道 编辑:程序博客网 时间:2024/05/19 09:12
地址:https://github.com/potato512/SYCategory
效果图:
代码示例:
// 倒计时+ (void)timerGCDWithTimeInterval:(NSTimeInterval)time maxTimerInterval:(NSInteger)maxTime afterTime:(NSTimeInterval)afterTime handle:(void (^)(NSInteger remainTime))handle{ if (0 >= maxTime) { return; } __block NSTimeInterval countdownTime = maxTime; dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); // 每秒执行(毫秒计) dispatch_source_set_timer(timer, dispatch_walltime(NULL, 0), (time * NSEC_PER_SEC), 0); dispatch_source_set_event_handler(timer, ^{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(afterTime * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ if (0 >= countdownTime) { dispatch_async(dispatch_get_main_queue(), ^{ if (handle) { handle(0); } }); dispatch_source_cancel(timer); } else { dispatch_async(dispatch_get_main_queue(), ^{ if (handle) { handle(countdownTime); } }); countdownTime--; } }); }); dispatch_resume(timer);}
// 使用[NSTimer timerGCDWithTimeInterval:1.0 maxTimerInterval:300 afterTime:0 handle:^(NSInteger remainTime) { self.label.text = [NSString stringWithFormat:@"%@", @(remainTime)];}];
注意事项:
使用了倒计时的视图控制器,退出当前视图控制器时,如果倒计时未完成时,则会继续执行倒计时计算,此时该视图控制器直到倒计时计算完成才被释放。
0 0
- 使用GCD进行倒计时操作
- 使用GCD实现倒计时
- 倒计时(使用GCD)
- ios 使用gcd 显示倒计时
- ios 使用gcd 显示倒计时
- ios 使用gcd 显示倒计时
- 使用CountdownTimer进行倒计时
- GCD倒计时
- GCD倒计时
- GCD倒计时
- GCD倒计时
- OC - 使用GCD实现倒计时功能
- Android 中如何使用CountDownTimer进行倒计时
- GCD实现倒计时
- GCD 处理时间倒计时
- GCD倒计时实现
- Swift3.0 GCD定时器的使用,实现倒计时,UIDatePicker的使用, 仿写一个活动倒计时的DEMO
- GCD使用(三)执行延时操作
- Android学习之剪贴板操作
- 矩阵(matrix)应用大总结(一)WOJ 642 Lost In WHU + POJ 3233
- Android面试题-onSaveInstanceState源码内核分析
- mysql学习笔记
- Objective-C 编程基本概念
- 使用GCD进行倒计时操作
- php 远程上传文件 远程上传图片
- 谷歌深度学习公开课学习笔记(0)
- 生产者和消费者问题(java简单实现)
- POJ 3368 ST处理RMQ
- 学习dubbo第一步,了解spring框架的XML扩展特性:让spring加载和解析你自定义的XML文件
- 手机报表参数和结果在一个页面展示
- 异常处理
- Kubenertes资源分配之Request和Limit解析