首页 > 代码库 > 【IOS】倒计时实现的两种方法
【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);
【IOS】倒计时实现的两种方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。