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 定时器操作的主要内容,如果未能解决你的问题,请参考以下文章

IOS GCD定时器

swift学习笔记 - swift3.0用GCD实现计时器

GCD dispatch_source基本使用,创建GCD定时器与NSTimer的区别

GCD 定时器

Swift3.0 GCD定时器的使用,实现倒计时,UIDatePicker的使用, 仿写一个活动倒计时的DEMO

IOS中切换页面如何继续计时之单例计时器