这里做一下记录
//倒计时时间 - 60S
__blockNSIntegertimeOut =59;
self.timeOut= timeOut;
//执行队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//计时器 -》 dispatch_source_set_timer自动生成
dispatch_source_ttimer =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(), ^{
// 倒计时结束
[CodeBtnsetTitle:@"重发验证码"forState:UIControlStateNormal];
[CodeBtnsetTitleColor:RGBCOLOR(79, 139, 244) forState:UIControlStateNormal];
[CodeBtnsetEnabled:YES];
[CodeBtnsetUserInteractionEnabled:YES];
});
}else{
//开始计时
//剩余秒数 seconds
NSIntegerseconds = timeOut %60;
NSString*strTime = [NSStringstringWithFormat:@"%.1ld", seconds];
//主线程设置按钮样式
dispatch_async(dispatch_get_main_queue(), ^{
[UIViewbeginAnimations:nilcontext:nil];
[UIViewsetAnimationDuration:1.0];
NSString*title = [NSStringstringWithFormat:@"%@S",strTime];
[CodeBtnsetTitle:titleforState:UIControlStateNormal];
// [yourButton.titleLabel setTextAlignment:NSTextAlignmentRight];
// 设置按钮title居中 上面注释的方法无效
[CodeBtnsetContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
[CodeBtnsetTitleColor:RGBCOLOR(79, 139, 244) forState:UIControlStateNormal];
[UIViewcommitAnimations];
//计时器间不允许点击
[CodeBtnsetUserInteractionEnabled:NO];
});
timeOut--;
}
});
dispatch_resume(timer);
网友评论