按钮倒计时实现

/**按钮倒计时@param btn 显示倒计时的按钮*/
+ (void)startTimeWithBtn:(UIButton *)btn {__block int timeout=59; //倒计时时间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_async(dispatch_get_main_queue(), ^{//设置界面的按钮显示 根据自己需求设置(倒计时结束后调用)[btn setTitle:@"发送验证码" forState:UIControlStateNormal];[btn setTitleColor:kCodeButtonColor forState:UIControlStateNormal];//设置不可点击btn.userInteractionEnabled = YES;});}else{int seconds = timeout % 60;NSString *strTime = [NSString stringWithFormat:@"%d", seconds];dispatch_async(dispatch_get_main_queue(), ^{//设置界面的按钮显示 根据自己需求设置NSLog(@"____%@",strTime);[btn setTitle:[NSString stringWithFormat:@"(%@s)",strTime] forState:UIControlStateNormal];[btn setTitleColor:kAuxiliaryFontColor forState:UIControlStateNormal];//设置可点击btn.userInteractionEnabled = NO;});timeout--;}});dispatch_resume(_timer);
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部