zoukankan      html  css  js  c++  java
  • UIButton添加倒计时

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

    例子代码如下:

     1 //获取验证码按钮
     2 - (IBAction)getButtonClick:(UIButton *)sender;
     3 
     4 #pragma mark - 获取验证码
     5 - (IBAction)getButtonClick:(UIButton *)sender
     6 {
     7     //正常状态下的背景颜色
     8     UIColor *mainColor = [UIColorcolorWithRed:84/255.0green:180/255.0blue:98/255.0alpha:1.0f];
     9     //倒计时状态下的颜色
    10     UIColor *countColor = [UIColorlightGrayColor];
    11     [selfsetTheCountdownButton:sender startWithTime:5title:@"获取验证码"countDownTitle:@"s"mainColor:mainColor countColor:countColor];
    12 }
    13 
    14 #pragma mark - button倒计时
    15 - (void)setTheCountdownButton:(UIButton *)button startWithTime:(NSInteger)timeLine title:(NSString *)title countDownTitle:(NSString *)subTitle mainColor:(UIColor *)mColor countColor:(UIColor *)color {
    16     //倒计时时间
    17     __block NSInteger timeOut = timeLine;
    18     dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
    19     dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0, 0, queue);
    20     //每秒执行一次
    21     dispatch_source_set_timer(_timer,dispatch_walltime(NULL,0), 1.0 * NSEC_PER_SEC,0);
    22     dispatch_source_set_event_handler(_timer, ^{
    23 
    24 //倒计时结束,关闭 25 if (timeOut == 0) { 26 dispatch_source_cancel(_timer); 27 dispatch_async(dispatch_get_main_queue(), ^{ 28 button.backgroundColor = mColor; 29 [button setTitle:titleforState:UIControlStateNormal]; 30 button.userInteractionEnabled =YES; 31 }); 32 } else { 33 int seconds = timeOut % 60; 34 NSString *timeStr = [NSStringstringWithFormat:@"%0.1d", seconds]; 35 dispatch_async(dispatch_get_main_queue(), ^{ 36 button.backgroundColor = color; 37 [button setTitle:[NSStringstringWithFormat:@"%@%@",timeStr,subTitle]forState:UIControlStateNormal]; 38 button.userInteractionEnabled =NO; 39 }); 40 timeOut--; 41 } 42 }); 43 dispatch_resume(_timer); 44 }
  • 相关阅读:
    [转] jQuery 操作 JSON 数据
    [转] 8张图学习javascript
    HTML文档类型声明的坑...
    Android 应用内HttpClient 与 WebView 共享 Cookie
    李嘉诚无锡演讲
    keytool 生成 Android SSL 使用的 BKS
    LeetCode-344-反转字符串
    LeetCode-342-4的幂
    LeetCode-338-比特位计数
    LeetCode-326-3的幂
  • 原文地址:https://www.cnblogs.com/zhouxihi/p/5990273.html
Copyright © 2011-2022 走看看