iOS 倒计时方法——dispatch
2014-10-27 00:00
330 查看
今天做短信验证码倒计时的时候要用到倒计时,发现倒计时也不是很好做,想用和上次做动画一样的方法设置多线程来解决却完全行不通。只有在网上继续找解决方法,下面的这个方法虽然不太适合短信验证码的倒计时,因为每次变换数字的时候会消失一下在出现,不过可能以后会用在其他地方,所以我就留下来了。
直接上代码了
可以替换的部分我标出来了,其他没标的应该都是比较容易看懂的~
直接上代码了
- (void)timeCount{//倒计时函数 __block int timeout=59; //倒计时时间 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),0.5*NSEC_PER_SEC, 0); //每0.5秒执行 dispatch_source_set_event_handler(_timer, ^{ if(timeout<=0){ //倒计时结束,关闭 dispatch_source_cancel(_timer); dispatch_async(dispatch_get_main_queue(), ^{ [_dynamicCode_btn setTitle:@"发送验证码" forState:UIControlStateNormal];//这里可以替换成自己需要的 _dynamicCode_btn.userInteractionEnabled = YES;//这是我自己用的方法,这里可以替换成自己需要的 }); }else{ int seconds = timeout % 60; NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds]; dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@"____%@",strTime); [_dynamicCode_btn setTitle:[NSString stringWithFormat:@"倒计时 %@",strTime] forState:UIControlStateNormal];//这里可以替换成自己需要的 [_dynamicCode_btn setTitle:strTime forState:UIControlStateNormal];//这里可以替换成自己需要的 _dynamicCode_btn.userInteractionEnabled = NO;//按钮禁止点击 }); timeout--; } }); dispatch_resume(_timer); }
可以替换的部分我标出来了,其他没标的应该都是比较容易看懂的~
相关文章推荐
- ios开发之倒计时实现的两种方法
- iOS UIButton倒计时方法——MZTimerLabel
- iOS UI异步更新:dispatch_async 与 dispatch_get_global_queue 的使用方法
- ios开发之倒计时实现的两种方法
- IOS异步获取数据并刷新界面dispatch_async的使用方法
- ios开发之倒计时实现的两种方法
- ios实现倒计时的两种方法
- iOS开发之:dispatch_async 与 dispatch_get_global_queue 的使用方法
- iOS 倒计时 方法
- <iOS>系统提供的dispatch方法
- iOS 创建单例的方法 dispatch_once
- iOS NSURLConnection 和 dispatch_async 错误的使用方法,导致回调方法无法调用
- ios开发之倒计时实现的两种方法
- iOS 倒计时方法
- iOS开发之:dispatch_async 与 dispatch_get_global_queue 的使用方法
- ios开发之倒计时实现的两种方法
- IOS异步获取数据并刷新界面dispatch_async的使用方法
- ios开发之倒计时实现的两种方法
- IOS-12-关于GCD多线程:dispatch_async 与 dispatch_get_global_queue 的使用方法
- ios开发之倒计时实现的两种方法