iOS-OC一句话设施UIButton倒计时(获取验证码)
2016-01-13 14:24
543 查看
//获取验证码按钮 - (IBAction)getButtonClick:(UIButton *)sender; #pragma mark - 获取验证码 - (IBAction)getButtonClick:(UIButton *)sender { //正常状态下的背景颜色 UIColor *mainColor = [UIColorcolorWithRed:84/255.0green:180/255.0blue:98/255.0alpha:1.0f]; //倒计时状态下的颜色 UIColor *countColor = [UIColorlightGrayColor]; [selfsetTheCountdownButton:sender startWithTime:5title:@"获取验证码"countDownTitle:@"s"mainColor:mainColor countColor:countColor]; } #pragma mark - button倒计时 - (void)setTheCountdownButton:(UIButton *)button startWithTime:(NSInteger)timeLine title:(NSString *)title countDownTitle:(NSString *)subTitle mainColor:(UIColor *)mColor countColor:(UIColor *)color { //倒计时时间 __block NSInteger timeOut = timeLine; 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(), ^{ button.backgroundColor = mColor; [button setTitle:titleforState:UIControlStateNormal]; button.userInteractionEnabled =YES; }); } else { int seconds = timeOut % 60; NSString *timeStr = [NSStringstringWithFormat:@"%0.1d", seconds]; dispatch_async(dispatch_get_main_queue(), ^{ button.backgroundColor = color; [button setTitle:[NSStringstringWithFormat:@"%@%@",timeStr,subTitle]forState:UIControlStateNormal]; button.userInteractionEnabled =NO; }); timeOut--; } }); dispatch_resume(_timer); }
相关文章推荐
- 关于EasyUI使用的点滴
- LeetCode - Distinct Subsequences
- git clone出现的error: The requested URL returned error: 401 Unauthorized
- 200,UIDevice设备类
- hbuider 框架分析
- easy-ui使用指南
- UI高级 多线程
- input type="checkbox",选中或取消,将value存入隐藏域
- jsp---DBUtil用法之ResultSetHandler 和 QueryRunner总结
- LinkedBlockingQueue的用法
- The transaction log for database 'tempdb' is full due to 'ACTIVE_TRANSACTION'
- 解决UIScrollView中嵌入UITableVIew无法点击StatusBar滚动到顶部
- UIButton加彩色边框
- UILabel的自适应问题
- Easyui使用中遇到的问题和注意事项
- UIPickerView 双排选择时间点
- 关于UITableView的headerView和footerView
- 点击UIButton按钮,按钮切换不同图片
- AFNetWorking 错误Request failed: unacceptable content-type: text/html"
- CodedUI Test 测试WPF程序,无法获取控件属性值的解决方法