这是我写的关于iOS倒计时的框架
https://github.com/MQL9011/MqlClock
其中既有NSTimer也有CADisplayLinkTimer
![](https://img.haomeiwen.com/i1755091/c3c362a3d04678d1.gif)
UITableViewCell每一个cell独立倒计时,且支持后台切换,滑动不卡,支持暂停和继续。
使用MqlClock
对于普通的UIlabel与UIButton的倒计时,用NSTimer就可以方便的做到。
引入头文件
#import "MqlClock.h"
添加代理 并初始化
@interface ViewController ()<MqlClockDelegate>
- (void)viewDidLoad {
[super viewDidLoad];
[self setUpUI];
self.mc = [MqlClock sharedMqlClock];
self.mc.delegate = self;
}
拿到当前时间并显示在Label上
#pragma mark MqlClockDelegate
- (void)showTheTimeNow:(NSString *)nowTime{
self.timeLable.text = nowTime;
}
按钮点击事件中设置按钮上的倒计时秒数
- (void)startCountDownTime{
[self.mc setTheCountDownWithSecond:20];
}
代理方法中获取当前倒计时秒数并显示在按钮上
- (void)countDown:(NSString *)cdTimer{
[self.countDownBtn setTitle:[NSString stringWithFormat:@"倒计时%@",cdTimer] forState:UIControlStateNormal];
}
有朋友需要列表单元格中各自倒计时的使用MqlClock也可以做到,还支持倒计时不同时间,后台倒计时,列表滑动等。
引入头文件
#import "UITableViewCell+MqlClock.h"
设置cell倒计时开始秒数
关于msStartSecond这个属性,我是使用runTime中的接口通过Category的方式给UITableViewCell加了个属性,为了方便给不同cell设置开始倒计时秒数。
cell.mcStartSecond = [NSString stringWithFormat:@"%ld",(indexPath.row * 10 + 10)];
在自定义UITableViewCell中调用计时事件就会开始倒计时
- (void)runCountDown{
[self runCADisplayLinkTimer];
}
通过这个UITableViewCell的Category的方法可以获取当前倒计时并显示到cell中的label上
- (void)showTheCountDownTime:(NSString *)time{
self.timeLable.text = time;
}
![](https://img.haomeiwen.com/i1755091/6e7f9571554f7e43.png)
the end
网友评论