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

    }

  • 相关阅读:
    7.2对象的生命周期
    7.2.2垃圾收集和对象的终结
    7.1.2验证
    发现电脑上装着liteide,就用golang做一个TCP通讯测试(支持先启动client端和断线重连)
    C++读写局域网共享
    C++编写 动态链接库dll 和 调用dll
    VBA果然很强大
    [Windows]查看运行进程的参数【wmic】
    自旋锁-SpinLock(.NET 4.0+)
    C#并行和多线程编程
  • 原文地址:https://www.cnblogs.com/wangxiaorui/p/5484565.html
Copyright © 2011-2022 走看看