手机获取验证码的倒计时效果

来源:互联网 发布:php项目管理系统 编辑:程序博客网 时间:2024/06/02 14:31

手机获取验证码的倒计时效果
之前做项目使用的是NSTimer做的倒计时效果,效果不太好。今天学习了下用GCD做,效果还是不错的。
这里写图片描述
关键代码如下:(完整代码)

       //创建一个全局并非队列            dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);            //创建一个定时器            _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);            //配置定时器,每秒执行            dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0);            //创建事件处理器            dispatch_source_set_event_handler(_timer, ^{                timeout --;                if (timeout <= 0) {                    //定时器结束,关闭                    dispatch_source_cancel(_timer);                    _timer = nil;                    //回到主线程刷新UI                    dispatch_async(dispatch_get_main_queue(), ^{                        [_btn setTitle:@"获取验证码" forState:UIControlStateNormal];                    });                }                else                {                    //回到主线程刷新UI                    dispatch_async(dispatch_get_main_queue(), ^{                        [_btn setTitle:[NSString stringWithFormat:@"%ds后重新获取",timeout] forState:UIControlStateNormal];                    });                }            });            //启动定时器            dispatch_resume(_timer);
0 0
原创粉丝点击