iOS封装倒计时按钮HLCountDownButton示例详解

目录
  • 引言
  • 演示图
  • 可选自定义属性
  • 3种样式选择
  • 回调说明
  • 全局样式设置

引言

在开发中经常会用到倒计时的按钮,常用在发送短信验证码中。最差的写法是把代码写在ViewController中。这样的话如果项目中存在多个倒计时按钮,代码就十分臃肿了。所以封装一个倒计时按钮就迫在眉睫了。传送门HLCountDownButton,欢迎帮忙点点小星星

  • 支持过xibstoryboard自定义样式
  • 支持切换前后台计时准确
  • 多种样式切换
  • 支持CocoaPods导入pod "HLCountDownButton"
  • 支持全局设置样式

演示图

可选自定义属性

/// 样式,默认HLCountDownButtonTypeNormal
@property (nonatomic, assign) IBInspectable NSInteger hlType UI_APPEARANCE_SELECTOR;
/// 是否可用,默认YES
@property (nonatomic, assign) IBInspectable BOOL hlEnabled UI_APPEARANCE_SELECTOR;
/// 正常标题,默认“获取验证码”
@property (nonatomic, copy) IBInspectable NSString *normalTitle UI_APPEARANCE_SELECTOR;
/// 重新获取标题,默认“获取验证码”
@property (nonatomic, copy) IBInspectable NSString *againTitle UI_APPEARANCE_SELECTOR;
/// 发送中标题格式,默认“%ds 后获取”
@property (nonatomic, copy) IBInspectable NSString *sendingTitleFormat UI_APPEARANCE_SELECTOR;
/// 高亮颜色,默认0x4181FE
@property (nonatomic, strong) IBInspectable UIColor *highlightedColor UI_APPEARANCE_SELECTOR;
/// 非高亮颜色,默认0xd2d2d2
@property (nonatomic, strong) IBInspectable UIColor *disabledColor UI_APPEARANCE_SELECTOR;
/// 圆角半径,默认4
@property (nonatomic, assign) IBInspectable CGFloat cornerRadius UI_APPEARANCE_SELECTOR;
/// 边框宽度,默认0.5
@property (nonatomic, assign) IBInspectable CGFloat borderWidth UI_APPEARANCE_SELECTOR;
/// 倒计时长,默认60s
@property (nonatomic, assign) IBInspectable NSInteger countDownSize UI_APPEARANCE_SELECTOR;

3种样式选择

typedef NS_ENUM(NSInteger, HLCountDownButtonType) {
    HLCountDownButtonTypeNormal,            ///< 无背景,无边框
    HLCountDownButtonTypeOnlyLine,          ///< 无背景,有边框
    HLCountDownButtonTypeOnlyBackground,    ///< 有背景,无边框
};

回调说明

__weak typeof(self) weakSelf = self;
self.countDownButton.startBlock = ^(){
    // TODO 点击了倒计时按钮,这里可进行发送验证码操作
    // [weakSelf sendCodeMsg];
};

注意:点击了会有startBlock回调,就不要为HLCountDownButton添加点击Action

全局样式设置

如果您项目中多个地方使用到该组件,您可以全局设置样式,例在AppDelegate添加

[HLCountDownButton appearance].highlightedColor = [UIColor redColor];

注意:代码 > appearance > interface builder,所以appearance设置的会覆盖在xib或storyboard中设置的属性,当然代码会覆盖appearance设置

以上就是iOS封装倒计时按钮HLCountDownButton示例详解的详细内容,更多关于iOS封装HLCountDownButton的资料请关注我们其它相关文章!

(0)

相关推荐

  • iOS实现秒杀活动倒计时

    IOS关于大型网站抢购.距活动结束,剩余时间倒计时的实现代码,代码比较简单,大家根据需求适当的添加修改删除代码 1.定义4个 Label 来接收倒计时: @property (weak, nonatomic) IBOutlet UILabel *dayLabel; @property (weak, nonatomic) IBOutlet UILabel *hourLabel; @property (weak, nonatomic) IBOutlet UILabel *minuteLabel; @

  • iOS启动页倒计时跳过按钮功能

    WSDrawCircleProgress, 根据UIBezierPath和CAShapeLayer自定义倒计时进度条,适用于app启动的时候设置一个倒计时关闭启动页面.可以设置进度条颜色,填充颜色,进度条宽度以及点击事件等. 公共方法: //set track color @property (nonatomic,strong)UIColor *trackColor; //set progress color @property (nonatomic,strong)UIColor *progre

  • iOS实现短信验证码倒计时

    在开发中,经常在需要用户注册的时候会需要实现验证码倒计时的功能,下面是解决这个问题的两种思路(使用UIButton控件) 一.利用NSTimer计时器 1.新建一个UIButton按钮,设置成属性,名为codeButton.(UIButton样式一定要为自定义,否则后面倒计时数秒时会出现闪烁现象) 2.定义一个NSTimer的属性,名为timer,同时定义一个用于计时的int变量time,设置初始值为60. //启动一个定时器 self.timer = [NSTimer scheduledTim

  • 详解iOS中多倒计时场景的解决方案

    背景 在我们开发APP的过程中,或多或少都遇到过需要使用倒计时的场景,大多数应用中的用户登录注册过程中获取验证码的倒计时,电商或者外卖APP中的订单送达的倒计时,以及秒杀类APP的秒杀倒计时等.对于这些需要倒计时的场景,通常情况下的解决方案是:在需要展示倒计时的各View模块各自维护一个自己的倒计时Timer,通过Timer的回调和模块本身需要的倒计时时间来更新对应View的倒计时的显示,再在此基础上加上对应的时间校准方案,一个简单的倒计时需求就完成了. 问题 对于APP内倒计时的业务如果只出现

  • iOS 验证码按钮倒计时功能

    在app 注册或者登录 需要验证码的地方.为了避免短时间内刷验证码.往往会加上一层验证. 倒计时结束后.可以重新获取! 代码实现如下: // _CountdownTime 倒计时总时间: //_timer 定时器 - (void)startTime:(UIButton *)VerificationCodeButton { __block NSInteger timeout = [_CountdownTime integerValue]; dispatch_queue_t queue = disp

  • iOS封装倒计时按钮HLCountDownButton示例详解

    目录 引言 演示图 可选自定义属性 3种样式选择 回调说明 全局样式设置 引言 在开发中经常会用到倒计时的按钮,常用在发送短信验证码中.最差的写法是把代码写在ViewController中.这样的话如果项目中存在多个倒计时按钮,代码就十分臃肿了.所以封装一个倒计时按钮就迫在眉睫了.传送门HLCountDownButton,欢迎帮忙点点小星星 支持过xib.storyboard自定义样式 支持切换前后台计时准确 多种样式切换 支持CocoaPods导入pod "HLCountDownButton&

  • go goth封装第三方认证库示例详解

    目录 简介 快速使用 更换 store 总结 简介 当前很多网站直接采用第三方认证登录,例如支付宝/微信/ Github 等.goth封装了接入第三方认证的方法,并且内置实现了很多第三方认证的实现: 图中截取的只是goth支持的一部分,完整列表可在其GitHub 首页查看. 快速使用 本文代码使用 Go Modules. 创建目录并初始化: $ mkdir goth && cd goth $ go mod init github.com/darjun/go-daily-lib/goth 安

  • IOS点击按钮隐藏状态栏详解及实例代码

    IOS点击按钮隐藏状态栏详解 前言: 最近学习IOS的基础知识,实现隐藏状态栏的功能,这里就记录下来,希望对大家有所帮助 实例代码: @interface SecondViewController () @property (nonatomic, assign,getter=isHideStatus) BOOL hideStatus; @end @implementation SecondViewController - (void)viewDidLoad { [super viewDidLoa

  • iOS开发之UIMenuController使用示例详解

    目录 简介 接口介绍 使用探索 如何创建并显示 UIMenuController 实现 Item 点击事件 菜单 Item 太多??? UIResponderStandardEditActions 协议 添加自定义菜单 箭头的方向 实际使用 总结 简介 UIMenuController 是一个菜单编辑界面,在很多地方都能用到,通常用于剪切.复制.粘贴.选择.全选和删除命令等,也可以自定义想要的操作,它长这样: 接口介绍 open class UIMenuController : NSObject

  • epoll封装reactor原理剖析示例详解

    目录 reactor是什么? reactor模型三个重要组件与流程分析 组件 流程 将epoll封装成reactor事件驱动 封装每一个连接sockfd变成ntyevent 封装epfd和ntyevent变成ntyreactor 封装读.写.接收连接等事件对应的操作变成callback 给每个客户端的ntyevent设置属性 将ntyevent加入到epoll中由内核监听 将ntyevent从epoll中去除 读事件回调函数 写事件回调函数 接受新连接事件回调函数 reactor运行 react

  • IOS开发Objective-C Runtime使用示例详解

    目录 前言 一些关键字 消息传递 (Messaging) KVO 关联对象 (Associated Objects) AOP(Method Swizzling) 其它 前言 Runtime 是使用 C 和汇编实现的运行时代码库,Objective-C 中有很多语言特性都是通过它来实现.了解 Runtime 开发可以帮助我们更灵活的使用 Objective-C 这门语言,我们可以将程序功能推迟到运行时再去决定怎么做,还可以利用 Runtime 来解决项目开发中的一些设计和技术问题,使开发过程更加具

  • axios封装与传参示例详解

    1.开发环境 vue+typescript 2.电脑系统 windows10专业版 3.在开发的过程中,我们会经常使用到 axios进行数据的交互,下面我来说一下,axios封装和传参! 4-1:下面结构如下: 4-2:request.js代码如下: import axios from 'axios' import qs from 'qs' axios.defaults.timeout = 2000000; //响应时间 axios.defaults.headers.post['Content-

  • iOS消息发送和转发示例详解

    前言 Objective-C 是一门动态语言,它将很多静态语言在编译和链接时期做的事情,放到了运行时来处理.之所以能具备这种特性,离不开 Runtime 这个库.Runtime 很好的解决了如何在运行时期找到调用方法这样的问题.下面话不多说了,来一起学习学习吧. 消息发送 在 Objective-C 中,方法调用称为向对象发送消息: // MyClass 类 @interface MyClass: NSObject - (void)printLog; @end @implementation M

  • Ant Design 组件库按钮实现示例详解

    目录 1 antd 之 Button API 2 antd 之 Button 示例 1 antd 之 Button API antd 组件库是基于 Ant Design 设计体系的 React UI 组件库,antd 为 Web 应用提供了丰富的基础 UI 组件,可以用于研发企业级中后台产品.这篇咱们介绍 antd 组件库之 按钮. 按钮 Button 是一个比较基础的 UI 组件,一般在有交互的应用中都会用到. 其 DOM 节点为 <Button>...</Button>,ant

  • 关于二次封装jquery ajax办法示例详解

    前言 Ajax 的全称是Asynchronous JavaScript and XML 异步的javaScript和XML AJax所涉及到得技术: 1.使用CSS和XHTML来表示. 2. 使用DOM模型来交互和动态显示. 3.使用XMLHttpRequest来和服务器进行异步通信.(核心) 4.使用javascript来绑定和调用. 在我们前端处理数据的时候免不了要 ajax 与后台通信, ajax 是通过 XMLHttpRequest 对象与服务器进行通信的, jquery 在 XMLHt

随机推荐