这是实现的一个轮播试图的效果图(暗黑模式)
多次下拉刷新的时候,出现较长时间空白,如图
(这里是亮模式哦)
查看图层4,打印两个视图的信息
发现两个视图位置和透明度信息
这是首次刷新的地方
这是实现动画轮播计时器方法
由我们代码的执行顺序上来看,并不可能出现上图中的问题,但是确实是出现了,而且是
在我们下拉刷新的时候,通过问题的表现来反推代码的执行,我们可以
推断出,是执行过代码"1"之后,立即执行代码“2”,而且这个问题不是必现的,
出现概率还很低,就想到,可能是上一次的执行动画未完全结束,其completionblock还未执行,而导致
代码“1”执行之后,上一次动画的结束block再执行,就导致了我们看到的bug,所以,我们刷新过之后,上次的动画要停止执行
如图,正在刷新的时候,动画要停止执行,问题就解决了
后来发现,上次的动画也会造成影响,造成重叠的问题。
就是说上次异步执行的操作对这次的UI造成了干扰,
动画的 completion
本质上是一个延迟的block操作, 要刷新的时候,需要中止尚未进行的
延迟操作
如果正在刷新,就展示刷新的展示样式,否则就执行正常的动画,这样就解决了