一段倒计时的代码
2015-09-23 14:42
239 查看
__block int timeout=60; //倒计时时间 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_async(dispatch_get_main_queue(), ^{ //设置界面的按钮显示 根据自己需求设置 [_buttonResend setTitle:@"重发验证码" forState:UIControlStateNormal]; _buttonResend.userInteractionEnabled = YES; _buttonResend.enabled = YES; }); }else{ // int minutes = timeout / 60; int seconds = timeout % 60; __block NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds]; dispatch_async(dispatch_get_main_queue(), ^{ //设置界面的按钮显示 根据自己需求设置 DYYLog(@"__ForetPassWordViewController__%@",strTime); if([strTime isEqualToString:@"00"]) { strTime = @"60"; } [_buttonResend setTitle:[NSString stringWithFormat:@"%@秒后重新发送",strTime] forState:UIControlStateDisabled]; _buttonResend.enabled = NO; _buttonResend.userInteractionEnabled = NO; }); timeout--; } }); dispatch_resume(_timer);
相关文章推荐
- 在Jmeter中使用自定义编写的Java测试代码
- TLD代码学习(转一)
- java异常的栈轨迹
- 【Retinex】【Frankle-McCann Retinex】matlab代码注释
- Java中的方法重载的参数是以静态类型为依据
- c语言课程总结
- Spring注解Hibernate对象的实例
- 组合算法的实现,递归,C语言
- C++ new 和Placement New 以及nothrow new
- Spring AOP解析类
- Lua获取数组大小
- BSS段、数据段、代码段、堆与栈
- 抛弃Fastcgi,用uwsgi来部署你的Django程序吧
- LRU缓存实现(Java)
- Java学习笔记【字符串知识要点】
- [原]打造Python开发环境之Python环境
- 深入理解Java的接口和抽象类
- 组合算法实现C语言,非递归
- JDK源代码阅读之CharSequence
- python 版websocket实现