ios开发一个简单易用的倒计时View,可用于快速创建点击获取验证码按钮,支持各种形式自定义。【重新进入当前页面或重启程序倒计时不会重置,仍会继续执行】
2020-02-29 22:01
573 查看
ZXCountDownView
github地址
安装
通过CocoaPods安装
pod 'ZXCountDownView'
手动导入
- 将ZXCountDownView拖入项目中。
导入头文件
#import "ZXCountDownView.h"
效果图
Demo
ZXCountDownLabel
- 设置一个倒计时Label,且自动记录倒计时进度:
//第一个参数40即为倒计时时间为40秒,第二个参数mark用于标记区分当前倒计时任务和其他倒计时任务,确保与其他任务不重名即可,block第一个参数即为剩余秒数,block返回值即为显示在Label上的文字。(此处实现了一个倒计时40秒,且显示”还剩40、39、38...秒哦“的Label) [self.scheduleStoreLabel setCountDown:40 mark:@"ScheduleStoreLabel" resTextFormat:^NSString *(long remainSec) { if(remainSec > 30){ weakSelf.scheduleStoreLabel.backgroundColor = [UIColor orangeColor]; }else{ weakSelf.scheduleStoreLabel.backgroundColor = [UIColor redColor]; } //显示剩余几分几秒 NSString *timeformatStr = [NSDate getDateStrWithSec:remainSec dateFormat:@"mm分ss秒"]; return timeformatStr; }];
- 开始倒计时
[self.scheduleStoreLabel startCountDown];
ZXCountDownBtn
- 与ZXCountDownLabel类似
ZXAutoCountDownBtn
- 设置一个点击获取验证码的Button,且点击后自动开启倒计时,重启App后仍然保持倒计时进度:
//此处实现了一个倒计时20秒,且显示“还剩20、19、18...秒后重试”的Btn,且退出重新进入当前控制器或重启App不受影响。 [self.getCheckCodeBtn enableAutoCountDown:20 mark:@"GetCheckCodeBtn" resTextFormat:^NSString *(long remainSec) { return [NSString stringWithFormat:@"%ld秒后重发",remainSec]; }];
#pragma mark 点击了获取验证码按钮 - (IBAction)getCheckCodeAction:(id)sender { //判断如果手机号码不合法,可不触发倒计时 if(0){ self.getCheckCodeBtn.start = NO; return; } //如果需要过2秒再执行倒计时 if(0){ self.getCheckCodeBtn.terminateCountDown = YES; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.getCheckCodeBtn startCountDown]; NSLog(@"执行获取验证码操作!!"); }); return; } NSLog(@"执行获取验证码操作!!"); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ //判断如果验证码请求失败,可重置倒计时按钮 if(0){ [self.getCheckCodeBtn resume]; } }); }
ZXCountDownCore
- 您也可以不依赖UI控件,直接开启一个倒计时任务
ZXCountDownCore *countDownCore = [[ZXCountDownCore alloc]init]; [countDownCore setCountDown:10 mark:@"testCountDown" resBlock:^(long remainSec) { //每秒执行一次 NSLog(@"remainSec--%ld",remainSec); }]; //开始倒计时 [countDownCore startCountDown];
Other
- 启用或禁用自动存储倒计时进度:
//disableScheduleStore 是否不存储倒计时进度,默认为NO,即默认存储倒计时进度 view.disableScheduleStore = YES; view.disableScheduleStore = NO;
- 通用倒计时控制:
//开始倒计时 [view startCountDown]; //重新开始倒计时 [view reStartCountDown]; //结束倒计时 [view stopCountDown]; ///关闭倒计时 [view invalidateTimer];
- 禁止倒计时停止时恢复到最初的状态(文字、文字颜色、文字背景色),默认为否,若为否,则remainSec == 0时设置的状态将无效
view.disableResumeWhenEnd = YES;
注意
- 若需要实现多个不同的倒计时view共用进度,例如登录获取验证码按钮,注册获取验证码按钮,找回密码获取验证码按钮,只需设置相同mark即可。
- ZXCountDownView中倒计时结束默认会将UI控件设置回最初的状态,例如刚开始倒计时按钮文字为“点击获取验证码”,倒计时结束您需要设置为“重新获取”,则您需要设置btn.disableResumeWhenEnd = YES,禁止自动将空间设置回最初的状态,并且在resTextFormat中判断remainSec == 0时将按钮设置为“重新获取”即可。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- ios开发快速、轻松地实现滑动选择tableView,支持各种自定义显示效果
- iOS webView 和 H5 页面交互(点击获取H5页面中的按钮,做自己想做的操作)
- iOS 简单实现重新获取验证码并倒计时60秒
- ios开发之-- tableview/collectionview获取当前点击的cell
- IOS开发之小实例--创建一个简单的用于视频录制和回放的应用程序
- 用户点击获取验证码之后我们会发送一条信息到用户手机,然后就会出现一个倒计时按钮,很像支付宝手机付款效果了,下面我给大家分享两个js效果
- iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除
- iOS开发系列之常用自定义控件开发集—继承UIButton控件代码快速创建按钮开发
- 创建一个按钮,点击打印当前页面
- iOS 开源一个高度可定制支持各种动画效果,支持单击双击,小红点,支持自定义不规则按钮的tabbar
- 【Android自定义View实战】之获取验证码倒计时按钮
- Android自定义View获取注册验证码倒计时按钮
- iOS 开源一个高度可定制支持各种动画效果,支持单击双击,小红点,支持自定义不规则按钮的tabbar
- ios开发轻松构建无数据、网络错误等占位图,简单易用,快速实现各种自定义效果
- ios开发如何批量打包?如何让同一个程序在一个手机上多次安装时不覆盖以前安装的,而是重新生成一个新的
- jquery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码、邮箱验证码
- iOS开发】 CoreText 使用教程:以创建一个简单的杂志应用为例
- Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏
- iOS开发 -创建一个简单的TableView
- iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)