最近在写iOS高仿"一个-ONE"App这个项目的时候,由于需要实现一个需求:显示日期的label通过动画的形式上下滚动来展现切换。刚开始是直接写到项目代码里的,后来发现在该项目中多处都会用到,干脆自己封装一个小型的三方库。
目前基础版本已经写完,可以实现所需的需求了。效果图:
(很尴尬,图中滚动方向反了。。。 代码已经修正了)
只需将UILabel替换为这个类,并调用一下这个类的核心方法,就可以实现图中的效果了!
实现思路:
- 添加两个临时Label,并播放动画,期间隐藏掉原Label。
- 针对连续点击的情况做了特殊处理,避免产生叠加和错乱。
GitHub地址:https://github.com/CoulsonWang/CWCalendarLabel
喜欢的请给个Star,谢谢!
8月5日更新:
在实际使用的时候,发现如果设置的新的text与原本的text完全相同时,也会播放一次动画。考虑到有时候使用者可能不需要这个动画,所以提供了一个属性:
enableWhenSame
可以自定义是否播放,默认为YES
8月8日更新:
最近在实际使用这个控件时,发现一个问题:如果原label没有设置尺寸,而是让系统根据文本内容自动计算尺寸的,那么当新的文本的内容较多,尺寸比较大时,会导致动画过程中文本无法显示完全的问题。
为了解决这个问题,提供了一个新的自定义属性,同时优化了内部实现,可以使动画文本的尺寸自适应:
sizeToFitOn
可以自定义是否需要将动画文本自动调整大小, 默认为NO。(如果没有给lable设置尺寸,则可以开启此属性)