倒计时实现的两种方法
timeFireMethod函数,timeFireMethod进行倒计时的一些操作,完成时把timer给invalidate掉就ok了,代码如下:
secondsCountDown = ;//60秒倒计时 countDownTimer = [NSTimer scheduledTimerWithTimeInterval: <span style=" target="_blank" href="http://cpro.baidu.com/cpro/ui/uijs.php?app_id=0&c=news&cf=1001&ch=0&di=128&fv=0&is_app=0&jk=d75e9253f4ee3769&k=target&k0=target&kdi0=0&luki=2&n=10&p=baidu&q=70084051_cpr&rb=0&rs=1&seller_id=1&sid=6937eef453925ed7&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1996075&u=http%3A%2F%2Fubluesky%2Ecom%2Farchives%2F344&urlid=0" id="1_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">target</span></a></span>:self selector:@selector(timeFireMethod) userInfo:nil repeats:YES]; -(void)timeFireMethod{ secondsCountDown--; ){ [countDownTimer invalidate]; } }
方法2:使用GCD来实现
代码如下:
__block ; //倒计时时间 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, ); dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, , ,queue); dispatch_source_set_timer(_timer,dispatch_walltime(NULL, ),); //每秒执行 dispatch_source_set_event_handler(_timer, ^{ ){ //倒计时结束,关闭 dispatch_source_cancel(_timer); dispatch_release(_timer); dispatch_async(dispatch_get_main_queue(), ^{ //设置界面的按钮显示 根据自己需求设置 。。。。。。。。 }); }else{ ; ; NSString *strTime = [NSString stringWithFormat:@"%d分%.2d秒后重新获取验证码",minutes, seconds]; dispatch_async(dispatch_get_main_queue(), ^{ //设置界面的按钮显示 根据自己需求设置 。。。。。。。。 }); timeout--; } }); dispatch_resume(_timer);