ios 实现倒计时的两种方式
方法1:使用NSTimer来实现
主要使用的是NSTimer的scheduledTimerWithTimeInterval方法来每1秒执行一次timeFireMethod函数,timeFireMethod进行倒计时的一些操作,完成时把timer给invalidate掉就ok了,代码如下:
secondsCountDown=60;//60秒倒计时
countDownTimer=[NSTimerscheduledTimerWithTimeInterval:1target:selfselector:@selector(timeFireMethod)userInfo:nilrepeats:YES];
-(void)timeFireMethod{
secondsCountDown--;
if(secondsCountDown==0){
[countDownTimerinvalidate];
}
}
方法2:使用GCD来实现
代码如下:
__blockinttimeout=300;//倒计时时间
dispatch_queue_tqueue=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_release(_timer);
dispatch_async(dispatch_get_main_queue(),^{
//设置界面的按钮显示根据自己需求设置
。。。。。。。。
});
}else{
intminutes=timeout/60;
intseconds=timeout%60;
NSString*strTime=[NSStringstringWithFormat:@"%d分%.2d秒后重新获取验证码",minutes,seconds];
dispatch_async(dispatch_get_main_queue(),^{
//设置界面的按钮显示根据自己需求设置
。。。。。。。。
});
timeout--;
}
});
dispatch_resume(_timer);
以上所述是小编给大家介绍的ios实现倒计时的两种方式,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!