方法一:

网上用的很多的一种,不多说,直接上代码.
-(void)startTime{
__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.getIdentifyCodeBt setTitle:@"获取验证码" forState:UIControlStateNormal];
self.getIdentifyCodeBt.userInteractionEnabled = YES;
[self.getIdentifyCodeBt setTitleColor:THEME_RED forState:UIControlStateNormal];
self.getIdentifyCodeBt.backgroundColor = [UIColor whiteColor];
self.getIdentifyCodeBt.layer.borderColor = THEME_RED.CGColor;
});
}else{
dispatch_async(dispatch_get_main_queue(), ^{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[self.getIdentifyCodeBt setTitle:[NSString stringWithFormat:@"%zd秒后失效",timeout] forState:UIControlStateNormal];
[self.getIdentifyCodeBt setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
self.getIdentifyCodeBt.backgroundColor = [UIColor lightGrayColor];
self.getIdentifyCodeBt.layer.borderColor = [UIColor clearColor].CGColor;
self.getIdentifyCodeBt.clipsToBounds = YES;
[UIView commitAnimations];
self.getIdentifyCodeBt.userInteractionEnabled = NO;
});
timeout--;
}
});
dispatch_resume(_timer);
}
到时直接调用就可以了。
方法二:利用分类
给UIButton新建一个分类
.h文件如下
#import <UIKit/UIKit.h> @interface UIButton (XSCountDown) - (void)xs_beginCountDownWithDuration:(NSTimeInterval)duration; - (void)xs_stopCountDown; @end
.m文件如下
#import "UIButton+XSCountDown.h"
#import "ThemeColor.h"
static NSTimer *_countTimer;
static NSTimeInterval _count;
static NSString *_title;
@implementation UIButton (XSCountDown)
- (void)xs_beginCountDownWithDuration:(NSTimeInterval)duration {
_title = self.titleLabel.text;
_count = duration;
_countTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(xs_updateTitle) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:_countTimer forMode:NSRunLoopCommonModes];
self.userInteractionEnabled = NO;
[self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
self.backgroundColor = [UIColor lightGrayColor];
self.layer.borderColor = [UIColor clearColor].CGColor;
self.clipsToBounds = YES;
}
- (void)xs_stopCountDown {
[_countTimer invalidate];
_countTimer = nil;
_count = 60.0;
[self setTitle:_title forState:UIControlStateNormal];
self.userInteractionEnabled = YES;
}
- (void)xs_updateTitle {
NSString *countString = [NSString stringWithFormat:@"%lis 后失效", (long)_count - 1];
self.userInteractionEnabled = NO;
[self setTitle:countString forState:UIControlStateNormal];
if (_count-- <= 1.0) {
[self xs_stopCountDown];
[self setTitleColor:THEME_RED forState:UIControlStateNormal];
self.backgroundColor = [UIColor whiteColor];
self.layer.borderColor = THEME_RED.CGColor;
}
}
@end
然后在controller里直接调用分类.h文件里的方法就ok了
[self.verifyBt xs_beginCountDownWithDuration:60.0];
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# ios
# 获取短信验证码
# 短信验证码倒计时
# 获取验证码倒计时
# IOS开发代码分享之用nstimer实现倒计时功能
# IOS实现验证码倒计时功能(一)
# IOS关于大型网站抢购、距活动结束
# 剩余时间倒计时的实现代码
# ios 实现倒计时的两种方式
# iOS中实现简单易懂秒杀倒计时/倒计时代码
# iOS中让多个cell上都出现倒计时的分析与实现
# iOS实现毫秒倒计时的方法详解
# iOS启动页倒计时跳过按钮功能
# Swift实现iOS应用中短信验证码倒计时功能的实例分享
# iOS实现秒杀活动倒计时
# 倒计时
# 直接调用
# 多说
# 验证码
# 大家多多
# 就可以
# 新建一个
# 网上
# forState
# beginAnimations
# setTitle
# UIControlStateNormal
# dispatch_async
# dispatch_source_cancel
# lt
# dispatch_source_set_event_handler
# getIdentifyCodeBt
# dispatch_get_main_queue
# whiteColor
# UIColor
相关文章:
上海网站制作开发公司,上海买房比较好的网站有哪些?
如何高效利用亚马逊云主机搭建企业网站?
如何通过远程VPS快速搭建个人网站?
兔展官网 在线制作,怎样制作微信请帖?
建站VPS选购需注意哪些关键参数?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星云端配置指南:模板选择与SEO优化一键生成
制作电商网页,电商供应链怎么做?
如何快速搭建安全的FTP站点?
如何自定义建站之星网站的导航菜单样式?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
建站之星后台管理:高效配置与模板优化提升用户体验
开源网站制作软件,开源网站什么意思?
平台云上自助建站如何快速打造专业网站?
如何选择域名并搭建高效网站?
如何快速建站并高效导出源代码?
如何快速打造个性化非模板自助建站?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何登录建站主机?访问步骤全解析
如何通过cPanel快速搭建网站?
代购小票制作网站有哪些,购物小票的简要说明?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
实例解析angularjs的filter过滤器
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
建站主机如何选?性能与价格怎样平衡?
网站制作需要会哪些技术,建立一个网站要花费多少?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
如何快速生成高效建站系统源代码?
动图在线制作网站有哪些,滑动动图图集怎么做?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
如何通过虚拟主机快速搭建个人网站?
公司网站制作价格怎么算,公司办个官网需要多少钱?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
如何通过WDCP绑定主域名及创建子域名站点?
青岛网站建设如何选择本地服务器?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
如何在西部数码注册域名并快速搭建网站?
如何在景安服务器上快速搭建个人网站?
建站为何优先选择香港服务器?
建站之星代理平台如何选择最佳方案?
Python多线程使用规范_线程安全解析【教程】
网站代码制作软件有哪些,如何生成自己网站的代码?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
*请认真填写需求信息,我们会在24小时内与您取得联系。