【IOS】倒计时实现的两种方法
方法1:使用NSTimer来实现
主要使用的是NSTimer的scheduledTimerWithTimeInterval方法来每1秒执行一次timeFireMethod函数,timeFireMethod进行倒计时的一些操作,完成时把timer给invalidate掉就ok了,代码如下:
1 secondsCountDown = 60;//60秒倒计时 2 countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeFireMethod) userInfo:nil repeats:YES]; 3 -(void)timeFireMethod{ 4 secondsCountDown--; 5 if(secondsCountDown==0){ 6 [countDownTimer invalidate]; 7 } 8 }
方法2:使用GCD来实现
代码如下:
1 __block int timeout=300; //倒计时时间 2 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 3 dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue); 4 dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行 5 dispatch_source_set_event_handler(_timer, ^{ 6 if(timeout<=0){ //倒计时结束,关闭 7 dispatch_source_cancel(_timer); 8 dispatch_release(_timer); 9 dispatch_async(dispatch_get_main_queue(), ^{ 10 //设置界面的按钮显示 根据自己需求设置 11 。。。。。。。。 12 }); 13 }else{ 14 int minutes = timeout / 60; 15 int seconds = timeout % 60; 16 NSString *strTime = [NSString stringWithFormat:@"%d分%.2d秒后重新获取验证码",minutes, seconds]; 17 dispatch_async(dispatch_get_main_queue(), ^{ 18 //设置界面的按钮显示 根据自己需求设置 19 。。。。。。。。 20 }); 21 timeout--; 22 23 } 24 }); 25 dispatch_resume(_timer);
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。