iOS开发中Cell上的跑秒

在iOS开发中有时会有cell上进行跑秒的需求,如每个cell上显示的每个商品的信息,每个商品都有一个时间的倒计时,当时间为0的时候就可以进行秒杀了。

我说一下我在实现这个需求的一些思路。

首先我们需要从后台获取这个剩余时间,这个剩余时间只有我们请求这个接口中的数据的时候这个剩余时间才进行刷新。我们在拿到这个剩余时间之后我们就要对这个剩余时间进行跑秒了,首先需要调用一个方法,我们假设这个方法名为A,我们调用方法A将我们拿到的时间显示在cell的某个label上。在方法A中我们要将剩余时间做一个减法的操作即将当前时间减去1秒,要想真正地实现跑秒的效果,我们需要每一秒都调用一下方法A。这时我们就需要在显示TableView的控制器中发送一个通知,这个通知是每过一秒就发送一个通知,然后在cell中接收这个通知,接收到通知之后去调用方法A,这样就实现了每过一秒就调用一次方法A,即对剩余时间做一个减1的操作,从而实现了跑秒的效果。

主要代码:

#pragma mark - 倒计时通知回调

- (void)countDownNotification {

/// 判断是否需要倒计时 -- 可能有的cell不需要倒计时,根据真实需求来进行判断

if (0) {

return;

}

/// 计算倒计时

NSString * count = [NSString stringWithFormat:@"%lld", _time];  // 剩余的秒数

NSInteger countDown = [count integerValue] - kCountDownManager.timeInterval;

//    NSInteger countDown = 100 - kCountDownManager.timeInterval;

/// 当倒计时到了进行回调

if (countDown <= 0) {

_timeLbl.text = @"00小时00分钟00秒";

// 回调给控制器

!self.countDownZero ?: self.countDownZero();

return;

}

/// 重新赋值

_timeLbl.text = [NSString stringWithFormat:@"%02zd小时%02zd分钟%02zd秒", countDown/3600, (countDown/60)%60, countDown%60];

}

效果图:


附上demo链接:https://github.com/yangguanghei/Cell-

2019.3.15

核心思想:每次都用返回的时间减去从记时开始过去的时间得到剩余的时间

手动调用是为了每次给时间赋值的时候去刷新时间,通知调用是为了每过一秒刷新一下时间

本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。😊

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

推荐阅读更多精彩内容

  • 注: 这篇文章因无法重新编辑, 已重写, 请参考新的文章: iOS 在cell中使用倒计时的处理方法(新) 需求:...
    大头herob阅读 12,896评论 82 44
  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 1,373评论 0 1
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,209评论 30 471
  • 无论你现在是刚刚踏入二十岁的青春花季 还是即将跟三十而立挂起钩的年纪 都可能会有很多热血浇灌一片丹心赤诚 渐渐地 ...
    图格那黎99阅读 636评论 5 16
  • 从昨天开始儿子睡醒后告诉有点累,我摸一下他的头感觉低烧,之后给量了体温在38度,觉得问题不大就给吃了点药就上班去...
    傲雪寒梅0801阅读 106评论 0 0