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实现倒计时的两种方式,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!