• 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为: 其他时, 是一闪一闪的效果.

  • 相关阅读:
    1503: [NOI2004]郁闷的出纳员
    2049: [Sdoi2008]Cave 洞穴勘测
    2301: [HAOI2011]Problem b
    BZOJ 1923: [Sdoi2010]外星千足虫
    BZOJ 2115: [Wc2011] Xor
    POJ 1830 开关问题
    欧拉函数基础
    BZOJ 2186 沙拉公主的困惑
    POJ 1845
    逆元基础知识整理
  • 原文地址:https://www.cnblogs.com/lxlx1798/p/7589357.html
Copyright © 2020-2023  润新知