GCD定時器驗證碼倒計時,gcd定時器驗證碼
- (IBAction)butClick:(UIButton *)but { dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); _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); __block NSInteger time = count; dispatch_source_set_event_handler(_timer, ^{ if(time<=0){ dispatch_source_cancel(_timer); dispatch_async(dispatch_get_main_queue(), ^{ [but setTitle:@"重新擷取" forState:UIControlStateNormal]; but.userInteractionEnabled = YES; but.alpha = 1.0; but.backgroundColor = [UIColor whiteColor]; }); } else { NSString *strTime = [NSString stringWithFormat:@"%lds", (long)time]; dispatch_async(dispatch_get_main_queue(), ^{ [but setTitle:strTime forState:UIControlStateNormal]; but.userInteractionEnabled = NO; but.backgroundColor = [UIColor lightTextColor]; }); time--; } }); dispatch_resume(_timer);}