先声明UIButton
UIButtonfirstBtn;
firstBtn = [[UIButton alloc] initWithFrame:CGRectMake(200, 160, 60, 40)]; [firstBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [firstBtn setTitle:@“60” forState:UIControlStateNormal];
[firstBtn addTarget:self action:@selector(tagehend) forControlEvents:UIControlEventAllEvents];
[self.view addSubview:firstBtn];
-(void)tagehend{ __blockNSIntegertimeOut =59;
//执行队列 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(), ^{ [self->firstBtnsetTitle:@"发送验证码"forState:UIControlStateNormal];
[self->firstBtn setUserInteractionEnabled:YES]; });
}else{ //开始计时 //剩余秒数 seconds NSIntegerseconds = timeOut %60;
NSStringstrTime = [NSStringstringWithFormat:@"%.1ld",seconds];
//主线程设置按钮样式 dispatch_async(dispatch_get_main_queue(), ^{ [UIViewbeginAnimations:nilcontext:nil]; [UIViewsetAnimationDuration:1.0];
[self->firstBtn setTitle:[NSString stringWithFormat:@"%@",strTime] forState:UIControlStateNormal]; [UIViewcommitAnimations];
//计时器件不允许点击
[self->firstBtn setUserInteractionEnabled:NO]; }); timeOut–; } }); dispatch_resume(timer);}
短信按钮倒计时60s
最新推荐文章于 2022-08-22 10:13:41 发布