UIButton添加倒计时

最近一个项目有获取手机短信跟邮箱验证码功能, 所以要加一个UIButton倒计时功能

例子代码如下:

- //获取验证码按钮
- - (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);
- }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,663评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 传闻中,知乎上有这样一个问题:“你见过最不自律的人是什么样子?” 点赞数第一的回答竟然是: “我见过的最不自律的人...
    shalen阅读 362评论 0 1
  • 1 昨天,嗯没毛病就是昨天,因为现在凌晨了。昨天逛街在我们这小镇上熙熙攘攘的衣服商场里突然就遇见了小学玩的特别...
    当小虾狗沦落毕业狗阅读 368评论 0 0
  • title: install mediawiki under centosdate: 2015-04-29 10:...
    菩提老鹰阅读 255评论 0 0