GCD 定时器操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GCD 定时器操作相关的知识,希望对你有一定的参考价值。
var seconds = 10 //倒计时时间 let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) let timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue); dispatch_source_set_timer(timer,dispatch_walltime(nil, 0),1 * NSEC_PER_SEC, 0); //每秒执行 dispatch_source_set_event_handler(timer) { if(seconds<=0){ //倒计时结束,关闭 dispatch_source_cancel(timer); dispatch_async(dispatch_get_main_queue(), { //设置界面的按钮显示 根据自己需求设置 btn.setTitleColor(UIColor.blackColor(), forState:.Normal) btn.setTitle("获取验证码", forState:.Normal) btn.titleLabel?.font = defaultFont14 btn.userInteractionEnabled = true }); }else{ dispatch_async(dispatch_get_main_queue(), { UIView.beginAnimations(nil, context: nil) UIView.setAnimationDuration(1) }) dispatch_async(dispatch_get_main_queue(), { //设置界面的按钮显示 根据自己需求设置 UIView.beginAnimations(nil, context: nil) UIView.setAnimationDuration(1) btn.setTitleColor(UIColor.orangeColor(), forState:.Normal) btn.setTitle("\(seconds)秒后重新发送", forState:.Normal) btn.titleLabel?.font = UIFont.systemFontOfSize(11) UIView.commitAnimations() btn.userInteractionEnabled = false }) seconds -= 1 } } dispatch_resume(timer)
10秒定时器。整理备忘
以上是关于GCD 定时器操作的主要内容,如果未能解决你的问题,请参考以下文章
GCD dispatch_source基本使用,创建GCD定时器与NSTimer的区别