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);

    }

  • 相关阅读:
    ES 使用小结
    TruncateATable 清除一张表
    js 排序,去重
    读高性能JavaScript编程 第四章 Conditionals
    读高性能JavaScript编程 第四章 Duff's Device
    c# AOP 文章地址
    String、StringBuffer与StringBuilder之间区别
    批处理命令
    C#中的is和as操作符
    c# 入门
  • 原文地址:https://www.cnblogs.com/wangxiaorui/p/5484565.html
Copyright © 2011-2022 走看看