倒计时按钮,iOS
来源:互联网 发布:html5音乐播放器源码 编辑:程序博客网 时间:2024/05/18 00:38
用一个button实现倒计时效果:
@interface UIButton (CountDown)/* * 倒计时按钮 * @param timeLine 倒计时总时间 * @param title 还没倒计时的title * @param subTitle 倒计时的子名字 如:时、分 * @param mColor 还没倒计时的颜色 * @param color 倒计时的颜色 */- (void)startWithTime:(NSInteger)timeLine title:(NSString *)title countDownTitle:(NSString *)subTitle mainColor:(UIColor *)mColor countColor:(UIColor *)color;@end
@implementation UIButton (CountDown)- (void)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(), ^{ self.backgroundColor = mColor; [self setTitle:title forState:UIControlStateNormal]; self.userInteractionEnabled = YES; }); }else{ int seconds = timeOut % 60; NSString * timeStr = [NSString stringWithFormat:@"%0.2d",seconds]; dispatch_async(dispatch_get_main_queue(), ^{ self.backgroundColor = color; [self setTitle:[NSString stringWithFormat:@"%@%@",timeStr,subTitle] forState:UIControlStateNormal]; self.userInteractionEnabled = NO; }); timeOut--; } }); dispatch_resume(_timer);}@end
实际使用代码:
- (void)viewDidLoad { [super viewDidLoad]; UIButton * countDownBtn = [[UIButton alloc]initWithFrame:CGRectMake(110, 150, 120, 40)]; [countDownBtn setTitle:@"获取验证码" forState:UIControlStateNormal]; countDownBtn.backgroundColor = [UIColor colorWithRed:84 / 255.0 green:180 / 255.0 blue:98 / 255.0 alpha:1.0f]; [countDownBtn addTarget:self action:@selector(countDownBtnAction:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:countDownBtn];}- (void)countDownBtnAction:(UIButton *)button{ [button startWithTime:60 title:@"点击重新获取" countDownTitle:@"s" mainColor:[UIColor colorWithRed:84 / 255.0 green:180 / 255.0 blue:98 / 255.0 alpha:1.0f] countColor:[UIColor colorWithRed:84 / 255.0 green:180 / 255.0 blue:98 / 255.0 alpha:1.0f]];}
1 0
- IOS按钮倒计时
- iOS按钮倒计时
- 倒计时按钮,iOS
- iOS 倒计时按钮
- iOS 倒计时按钮
- IOS 倒计时 按钮
- iOS - 验证码,倒计时按钮
- iOS-按钮60s倒计时
- 按钮倒计时的实现 iOS
- iOS倒计时按钮Button标题闪烁处理
- iOS 分类之按钮倒计时UIButton+CountDown
- iOS启动页倒计时跳过按钮
- iOS倒计时按钮Button标题闪烁处理
- iOS学习笔记--封装倒计时按钮
- 倒计时按钮
- 倒计时按钮
- 倒计时按钮
- 按钮倒计时
- 未来的路很长,要学会一个人走。
- 欢迎使用CSDN-markdown编辑器
- JAVA编码转换的详细过程
- JSPatch学习系列-UI进阶
- [探讨]开发者眼中的PhoneGap体验
- 倒计时按钮,iOS
- 技术框架小知识点之框架搭建
- RMQ(Range Minimum Query)问题
- 磁盘测试过程
- Struts2实现原理(附上自己理解)
- bzoj 3441
- IOS-学习笔记(3)
- Linux内存buffer和cache的区别
- Activity声明周期解析