一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

ios 实现倒计时的两种方式

时间:2017-03-01 编辑:简简单单 来源:一聚教程网

 方法1:使用NSTimer来实现

主要使用的是NSTimer的scheduledTimerWithTimeInterval方法来每1秒执行一次timeFireMethod函数,timeFireMethod进行倒计时的一些操作,完成时把timer给invalidate掉就ok了

 代码如下复制代码

secondsCountDown =60;//60秒倒计时

 countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1target:self selector:@selector(timeFireMethod) userInfo:nil repeats:YES];

-(void)timeFireMethod{

  secondsCountDown--;

  if(secondsCountDown==0){

   [countDownTimer invalidate];

  }

}

方法2:使用GCD来实现

 代码如下复制代码

__blockinttimeout=300;//倒计时时间

 dispatch_queue_t queue = 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 = [NSString stringWithFormat:@"%d分%.2d秒后重新获取验证码",minutes, seconds];

     dispatch_async(dispatch_get_main_queue(), ^{

       //设置界面的按钮显示 根据自己需求设置

。。。。。。。。

     });

     timeout--;

   }

 });

 dispatch_resume(_timer);

热门栏目