欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

ios. GCD 倒计时时间

发布时间:2025/3/17 编程问答 30 豆豆
生活随笔 收集整理的这篇文章主要介绍了 ios. GCD 倒计时时间 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

        //倒计时时间

            __block int timeout = 60;

            

            dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);//创建globle队列

            //创建timer 定时器

            dispatch_source_t  _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);

             //每秒执行。 设置1s触发一次,0s的误差

            dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), 1.0*NSEC_PER_SEC, 0);

            //触发事件

            dispatch_source_set_event_handler(_timer, ^{

                

                if(timeout<=0){ //倒计时结束,关闭

                    

                    dispatch_source_cancel(_timer); //取消 dispatch 源

                    dispatch_async(dispatch_get_main_queue(), ^{

                        //回主线程  更新UI   设置界面的按钮显示 根据自己需求设置

                        weakSelf.getCodeBtn.enabled = YES;

                        [weakSelf.getCodeBtn setTitle: @"获取验证码" forState:UIControlStateNormal];

                    });

                }

                else

                {

                    int seconds = timeout % 60;

                    NSString *strTime = [NSString stringWithFormat:@"%.0d", seconds];

                    dispatch_async(dispatch_get_main_queue(), ^{

                        

                        //回主线程 更新UI   设置界面的按钮显示 根据自己需求设置

                        weakSelf.getCodeBtn.enabled = NO;

                        weakSelf.getCodeBtn.titleLabel.textAlignment = NSTextAlignmentCenter;

                        

                        if (strTime.length == 0) {

                            [self.getCodeBtn setTitle:[NSString stringWithFormat:@"验证码(60)"] forState:UIControlStateDisabled];

                        }

                        else

                        {

                            [self.getCodeBtn setTitle:[NSString stringWithFormat:@"验证码(%@)",strTime] forState:UIControlStateDisabled];

                        }

                    });

                    

                    timeout--;

                }

            });

             //开始执行dispatch源

            dispatch_resume(_timer);

            

            

新人创作打卡挑战赛发博客就能抽奖!定制产品红包拿不停!

总结

以上是生活随笔为你收集整理的ios. GCD 倒计时时间的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。