编辑个人资料
的跟帖
  • [self.vCodeBtn setEnabled:NO];
    count = 60;
    NSTimer *time = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(openFire:) userInfo:nil repeats:YES];
    -函数实现方法:
    -(void)openFire:(NSTimer *)time
    {
    count–;
    NSString *miao = [NSString stringWithFormat:@”%ld”,(long)count];
    [self.vCodeBtn setTitle:miao forState:0];
    if (count == 1)
    {
    [self.vCodeBtn setTitle:@”Reacquire” forState:0];
    [self.vCodeBtn setEnabled:YES];
    [time invalidate];
    }
    }

     

    第二种:使用GCD来实现:

    __block int timeout=300; //倒计时时间
    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_release(_timer);
    dispatch_async(dispatch_get_main_queue(), ^{
    //设置界面的按钮显示 根据自己需求设置
    。。。。。。。。
    });
    }else{
    int minutes = timeout / 60;
    int seconds = timeout % 60;
    NSString *strTime = [NSString stringWithFormat:@”%d分%.2d秒后重新获取验证码”,minutes, seconds];
    dispatch_async(dispatch_get_main_queue(), ^{
    //设置界面的按钮显示 根据自己需求设置
    。。。。。。。。
    });
    timeout–;
    }
    });
    dispatch_resume(_timer);