zoukankan      html  css  js  c++  java
  • iOS 短信验证码倒计时按钮的实现

    转载于ios原作者

    验证码倒计时按钮的应用是非常普遍的,本文介绍了IOS实现验证码倒计时功能,点击获取验证码,进入时间倒计时,感兴趣的小伙伴们可以参考一下:
    实现思路:

    >创建按钮,添加点击方法;
    
    >用NSTimer定时器,每秒执行一次,定时改变Button的title,改变Button的样式,设置Button不可点击;
    
    >若倒计时结束,定时器关闭,并改变Button的样式,可以点击;
    

    马上
    在按钮的点击事件里调用该方法

    
    -(void)openCountdown{
    
    
        __block NSInteger time = 59; 
    
    
        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(time <= 0){
    
             dispatch_source_cancel(_timer);   
    
             dispatch_async(dispatch_get_main_queue(), ^{              
    
                    [self.authCodeBtn setTitle:@"重新发送" forState:UIControlStateNormal];
    
                    [self.authCodeBtn setTitleColor:[UIColor colorFromHexCode:@"FB8557"] 
    
                    forState:UIControlStateNormal];       
    
                     self.authCodeBtn.userInteractionEnabled = YES;
    
                });
    
            }else{       
    
             int seconds = time % 60;      
    
             dispatch_async(dispatch_get_main_queue(), ^{       
    
                    [self.authCodeBtn setTitle:[NSString stringWithFormat:@"重新发送(%.2d)", seconds] forState:UIControlStateNormal];
    
    
                    [self.authCodeBtn setTitleColor:[UIColor colorFromHexCode:@"979797"] 
    
    forState:UIControlStateNormal];        
    
            self.authCodeBtn.userInteractionEnabled = NO;
    
                });
    
                time--;
    
            }
    
        });
    
        dispatch_resume(_timer);
    
    }
    

    注意:

    • 我们在创建Button时,要设置Button的样式,
    • 当type为:UIButtonTypeCustom时,是读秒的效果。
    • 当type为:其他时,是一闪一闪的效果。

    文/Li_Cheng(简书作者)
    原文链接:http://www.jianshu.com/p/2104865e7dba

    追寻最真
  • 相关阅读:
    c++ 全局变量初始化的一点总结
    新的博客
    Git常用命令总结
    git 分支 branch 操作
    状态管理Vuex
    让 markdown 生成带目录的 html 文件
    mysql安装时,提示:Failed to start service MYSQL80
    【React 资料备份】React Hook
    【React 资料备份】React v16.3之后的生命周期
    两个数组对象取并集
  • 原文地址:https://www.cnblogs.com/zhao-jie-li/p/5543031.html
Copyright © 2011-2022 走看看