zoukankan      html  css  js  c++  java
  • GCD计时DEMO

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        
        _timeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        [_timeBtn setBackgroundImage:[UIImage imageNamed:@"short2_apply_btn_disable"] forState:UIControlStateNormal];
        [_timeBtn setBackgroundImage:[UIImage imageNamed:@"short2_apply_btn_over"] forState:UIControlStateHighlighted];
        [_timeBtn setTitle:@"发送验证码" forState:UIControlStateNormal];
        _timeBtn.frame = CGRectMake(100, 100, 150, 30);
        [_timeBtn addTarget:self action:@selector(starTime) forControlEvents:UIControlEventTouchUpInside];
    
        [self.view addSubview:_timeBtn];
    }
    
    - (void)starTime
    {
        __block NSInteger timeout = 60; // 倒计时时间
        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_TIME_NOW, 1 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
        dispatch_source_set_event_handler(timer, ^{
            if (timeout <= 0 ) {
                dispatch_source_cancel(timer);
                dispatch_async(dispatch_get_main_queue(), ^{
                    [_timeBtn setTitle:@"发送验证码" forState:UIControlStateNormal];
                    _timeBtn.userInteractionEnabled = YES;
    
                });
            }else{
                NSInteger seconds = timeout % 60;
                NSString *strTime = [NSString stringWithFormat:@"%.2d",seconds];
                dispatch_async(dispatch_get_main_queue(), ^{
                    NSLog(@"___%@",strTime);
                    [_timeBtn setTitle:[NSString stringWithFormat:@"%@秒后重新发送",strTime] forState:UIControlStateNormal];
                    _timeBtn.userInteractionEnabled = NO;
                });
            }
            timeout-- ;
        });
        dispatch_resume(timer);
    }
    

      

  • 相关阅读:
    Andriod调试桥
    抓包工具charles的使用
    测试常用工具
    Indentation error codes
    Cmder 中文乱码的解决方法
    修改Cmder命令提示符
    统计单词出现的字数
    将字串内容输出到文件
    python数据实例str
    python语法检查工具
  • 原文地址:https://www.cnblogs.com/wuwangchuxin/p/3796759.html
Copyright © 2011-2022 走看看