iOS开发之倒计时按钮的功能的实现

首先你要创建一个按钮,然后在按钮的点击事件里面写上一下代码即可:

__block int timeout=60; //倒计时时间

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(), ^{

[self.getAuthCodeBtn setTitle:@"重新获取" forState:UIControlStateNormal];

self.getAuthCodeBtn.userInteractionEnabled = YES;

self.getAuthCodeBtn.backgroundColor = [UIColor whiteColor];

});

}else{

int seconds = timeout;

NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];

dispatch_async(dispatch_get_main_queue(), ^{

self.getAuthCodeBtn.userInteractionEnabled = NO;

[UIView beginAnimations:nil context:nil];

[UIView setAnimationDuration:1];

[self.getAuthCodeBtn setTitle:[NSString stringWithFormat:@"%@秒后重新发送",strTime] forState:UIControlStateNormal];

[UIView commitAnimations];

});

timeout--;

}

});

dispatch_resume(_timer);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.NSString过滤特殊字符串定义一个特殊字符的集合NSCharacterSet set = [NSChara...
    奋拓达阅读 783评论 0 0
  • 很多项目中,都会涉及到倒计时的功能, 发送完验证码开始倒计时,针对这个我个人封装了一个简单的方法来实现此功能, 话...
    LOVE婷阅读 363评论 0 0
  • 目录(GCD): 关键词 混淆点 场景应用 总结 1. 关键词 线程概念: 独立执行的代码段,一个线程同时间只能执...
    Ryan___阅读 1,303评论 0 3
  • 打印View所有子视图 layoutSubviews调用的调用时机 当视图第一次显示的时候会被调用当这个视图显示到...
    hyeeyh阅读 534评论 0 3
  • 清朝盛行玩相公,捧戏子,《品花宝鉴》的主角,便是在这两者的围剿中求生存的男旦们。 身为男子却要做女态,演女子,本身...
    白宁纪事阅读 2,456评论 0 2