倒计时

最近一直没有更新简书是因为在开发和测试阶段,有任务,没有进行学习,不过在做任务的时候也遇到了一些技术点,在这里总结一下。

今天遇到一个需求是倒计时的制作

首先我们先捋捋思路,肯定是用到NSTimer,这里我的页面上涉及到scrollview,所以将timer放在了NSRunLoopCommonModes里面了,具体原因请查看RunLoop

打比方我们设计的是一个30分钟的倒计时,那么我们涉及到三个时间点:

1、订单产生的时间--addTime(creatTime)

2、当前时间--currentTime

3、订单结束的时间--addTime+30分钟

我们需要做的就是上述2和3的时间进行比较,如果2大,那么说明订单已经超时了。如果3大,说明订单还存活。

下边是代码,最主要的一步就是红框里面的。

因为我们的需求是“剩23分44秒自动关闭”里面,汉字是黑色的,数字是橙红色的,所以下半部分代码做的是位置的判断和颜色的添加。

这里还需要注意的一点是,self.attrString用的不是NSString,而是NSMutableAttributedString,所以在给label赋值的时候选择是label.attributedText。不然会报黄色警告甚至崩溃。

位置的判断是将数字插入在了汉字中间,做位置的判断和label.attributedText的处理,保证了汉字和数字之间的距离是随着数字的两位或者一位数进行frame的调整,避免间距太大,太难看。

我们判断当分钟数和秒数都为0时或者有一个是负数时,我们就把定时器停掉,然后去发送取消订单的请求。

当然,这里只是介绍了一个定时器的制作,如果在tabelview里面每个cell上边都有定时器的话,那么我们同样需要注意创建NSTimer的时候,将timer放在NSRunLoop里面的NSRunLoopCommonModes里。



最后,哪里不对的地方可以给我留言,我会及时改进的,谢谢大家。

推荐阅读更多精彩内容