//计时器发送验证码. myButton为发送验证码的按键
-(void)sentPhoneCodeTimeMethodWithButton:(UIButton *)myButton{
//倒计时时间 - 60秒
__blockNSInteger timeOut = 59;
//执行队列
dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
//计时器 -》dispatch_source_set_timer自动生成
dispatch_source_t timer =dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0, 0, queue);
dispatch_source_set_timer(timer,DISPATCH_TIME_NOW, 1.0 * 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(), ^{
[myButton setTitle:@"发送验证码"forState:UIControlStateNormal];
[myButton setUserInteractionEnabled:YES];
});
}else{
//开始计时
//剩余秒数 seconds
NSInteger seconds = timeOut %60;
NSString *strTime = [NSStringstringWithFormat:@"%.1ld",seconds];
//主线程设置按钮样式
dispatch_async(dispatch_get_main_queue(), ^{
[UIViewbeginAnimations:nilcontext:nil];
[UIViewsetAnimationDuration:1.0];
[myButton setTitle:[NSStringstringWithFormat:@"%@S后重新发送",strTime]forState:UIControlStateNormal];
[UIViewcommitAnimations];
//计时器件不允许点击
[myButton setUserInteractionEnabled:NO];
});
timeOut--;
}
});
dispatch_resume(timer);
}