博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios开发之倒计时实现的方法
阅读量:4217 次
发布时间:2019-05-26

本文共 2007 字,大约阅读时间需要 6 分钟。

方法1:使用GCD来实现
//倒计时-(void)countdown{    __block int timeout=60; //倒计时时间    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),1.0*NSEC_PER_SEC, 0); //每秒执行    dispatch_source_set_event_handler(_timer, ^{        if(timeout<=0){ //倒计时结束,关闭            dispatch_source_cancel(_timer);            dispatch_async(dispatch_get_main_queue(), ^{                //设置界面的按钮显示 根据自己需求设置                [_verificationButton setTitle:@"发送验证码" forState:UIControlStateNormal];                _verificationButton.backgroundColor = [UIColor colorWithHexString:@"ec611e"];                _verificationButton.userInteractionEnabled = YES;            });        }else{            //            int minutes = timeout / 60;            int seconds = timeout % 61;                        NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];            dispatch_async(dispatch_get_main_queue(), ^{                //设置界面的按钮显示 根据自己需求设置                NSLog(@"____%@",strTime);                [_verificationButton setTitle:[NSString stringWithFormat:@"%@S",strTime] forState:UIControlStateNormal];                _verificationButton.userInteractionEnabled = NO;                _verificationButton.backgroundColor = [UIColor colorWithRed:203/255.0 green:203/255.0 blue:203/255.0 alpha:1];                            });            timeout--;                    }    });    dispatch_resume(_timer);}

方法1:使用NSTimer来实现

        主要使用的是NSTimer的scheduledTimerWithTimeInterval方法来每1秒执行一次timeFireMethod函数,timeFireMethod进行倒计时的一些操作,完成时把timer给invalidate掉就可以了,代码如下:

secondsCountDown = 60;//60秒倒计时   countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeFireMethod) userInfo:nil repeats:YES];  -(void)timeFireMethod{      secondsCountDown--;      if(secondsCountDown==0){        [countDownTimer invalidate];      }  }

转载地址:http://mwtmi.baihongyu.com/

你可能感兴趣的文章
Web前端学习笔记——JavaScript之面向对象游戏案例:贪吃蛇
查看>>
不做单元测试?小心得不偿失!嵌入式系统单元测试工具,自动生成测试用例
查看>>
一种实用的联网汽车无线攻击方法及车载安全协议
查看>>
光靠欺骗检测是不够的:对抗多目标跟踪的攻击
查看>>
基于微区块链的V2X地理动态入侵检测
查看>>
面向V2C场景的ADAS数字孪生模型构建方法
查看>>
Comma2k19数据集使用
查看>>
面向自动驾驶车辆验证的抽象仿真场景生成
查看>>
一种应用于GPS反欺骗的基于MLE的RAIM改进方法
查看>>
筑牢网络安全基座,安全护航经济数字化转型大会成功举办
查看>>
单元测试工具:单元测试的测试前置驱动条件
查看>>
汽车智不智能?“智能座舱”有话说
查看>>
自动驾驶汽车CAN总线数字孪生建模(一)
查看>>
自动驾驶汽车CAN总线数字孪生建模(二)
查看>>
自动驾驶汽车GPS系统数字孪生建模(一)
查看>>
自动驾驶汽车GPS系统数字孪生建模(二)
查看>>
上海控安入选首批工控安全防护能力贯标咨询机构名单
查看>>
自动驾驶汽车传感器数字孪生建模(一)
查看>>
CUDA 学习(四)、线程
查看>>
CUDA 学习(五)、线程块
查看>>