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

倒计时实现的两种方法

 

timeFireMethod函数,timeFireMethod进行倒计时的一些操作,完成时把timer给invalidate掉就ok了,代码如下:

1 secondsCountDown = 60;//60秒倒计时

2  countDownTimer = [NSTimer scheduledTimerWithTimeInterval:1 <span style="width: auto; height: auto;" id="1_nwp"><a style="text-decoration: none;" mpid="1" 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];

3 -(void)timeFireMethod{

4     secondsCountDown--;

5     if(secondsCountDown==0){

6       [countDownTimer invalidate];

7     }

8 }

 


 
 

方法2:使用GCD来实现

代码如下:

 1 __block int timeout=300; //倒计时时间

 2 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

 3 dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);

 4 dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行

 5 dispatch_source_set_event_handler(_timer, ^{

 6     if(timeout<=0){ //倒计时结束,关闭

 7         dispatch_source_cancel(_timer);

 8         dispatch_release(_timer);

 9         dispatch_async(dispatch_get_main_queue(), ^{

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

11             。。。。。。。。

12         });

13     }else{

14         int minutes = timeout / 60;

15         int seconds = timeout % 60;

16         NSString *strTime = [NSString stringWithFormat:@"%d分%.2d秒后重新获取验证码",minutes, seconds];

17         dispatch_async(dispatch_get_main_queue(), ^{

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

19     。。。。。。。。

20         });

21         timeout--;

22  

23     }

24 });

25 dispatch_resume(_timer);

 

你可能感兴趣的:(ios开发)