zoukankan      html  css  js  c++  java
  • iOS 60秒倒计时 发送验证码

    #import "ViewController.h"

     

    @interface ViewController ()

    {

        UIButton *_button;

        __block int timeout;

    }

     

    @end

     

    @implementation ViewController

     

     

    - (void)viewDidLoad {

        [super viewDidLoad];

        

        _button = [UIButton buttonWithType:UIButtonTypeCustom];

        _button.frame = CGRectMake(0, 0, 100, 30);

        _button.center = self.view.center;

        [_button setTitle:@"发送验证码" forState:UIControlStateNormal];

        [_button setBackgroundColor:[UIColor purpleColor]];

       

        _button.layer.cornerRadius = 5;

        _button.clipsToBounds = YES;

        [_button addTarget:self action:@selector(verificationCodeCountDown) forControlEvents:UIControlEventTouchUpInside];

        

        [self.view addSubview:_button];

        

    }

    - (void)verificationCodeCountDown

    {

        __block NSString *strTime = [[NSString alloc] init];

        //验证码倒计时

        timeout=10; //倒计时时

        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 setTitle:@"发送验证码" forState:UIControlStateNormal];

                    _button.userInteractionEnabled = YES;

                });

            }else{

                int seconds = timeout % 120;

                if (seconds == 0) {

                    strTime = [NSString stringWithFormat:@"%d",timeout];

                }

                else {

                    strTime = [NSString stringWithFormat:@"%.2d", seconds];

                }

                dispatch_async(dispatch_get_main_queue(), ^{

                    //设置界面的按钮显示 根据自己需求设置

                    [_button setTitle:[NSString stringWithFormat:@"%@",strTime] forState:UIControlStateNormal];

                    _button.userInteractionEnabled = NO;

                    NSLog(@"倒计时%@",strTime);

                });

                timeout--;

                

            }

        });

        dispatch_resume(_timer);

    }

  • 相关阅读:
    Thymeleaf模板引擎语法
    kali更新软件源
    解决kali安装成功后没有声音的问题
    SSO的误区及建议
    关于 target="_blank"漏洞的分析
    好久没来了,平时一些笔记都记在印象笔记,长传一波
    BIOS基础
    CSRF的本质及防御
    linux下stricky
    CSRF与xss的区别
  • 原文地址:https://www.cnblogs.com/sunflower-lhb/p/5333031.html
Copyright © 2011-2022 走看看