ios开发——实用技术OC篇》倒计时实现的两种方法

时间:2022-03-23 23:09:10
ios开发——实用技术OC篇》倒计时实现的两种方法

倒计时实现的两种方法

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);