zoukankan      html  css  js  c++  java
  • 按钮倒计时的GCD 方法

    - (void)startCountDownAction{

        //开始倒计时  codebtn 是发送验证码的btn ,也是倒计时的UI

        self.codeBttn.enabled = NO;

        __block int timeout = 60;

        [self.codeBttn setTitle:@"60" forState:UIControlStateNormal];

        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(), ^{

                    

                    //倒计时结束

                    self.codeBttn.enabled = YES;

                    [self.codeBttn setTitle:@"发送验证码" forState:UIControlStateNormal];

                    

                });

                

            }else{

                int seconds = timeout % 60;

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

                dispatch_async(dispatch_get_main_queue(), ^{

                    

                    [self.codeBttn setTitle:strTime forState:UIControlStateNormal];

                    

                });

                timeout--;

                

            }

        });

        dispatch_resume(_timer);

    }

  • 相关阅读:
    C++重载运算符
    C++中的友元函数和友元类
    C++中的static关键字
    C++的new运算符和delete运算符
    git常用命令
    php+mysql+apache报错
    Nodejs 异步式 I/O 与事件式编程
    开始用Node.js编程
    Nodejs 模块
    Mac OS X上安装Node.js
  • 原文地址:https://www.cnblogs.com/wangxiaorui/p/5484565.html
Copyright © 2011-2022 走看看