单元格消失时动画停止,再次出现时动画停止
Posted
技术标签:
【中文标题】单元格消失时动画停止,再次出现时动画停止【英文标题】:Animation stops when cell disappear and not resume when appear again 【发布时间】:2016-09-20 09:34:10 【问题描述】:我有一个简单的动画(实际上是其中两个,但为了简单起见仅显示一个),它不断淡入和淡出标签。因此,当我以某些动画单元格消失然后向后滚动的方式滚动 tableview 时,这些单元格不再具有动画效果。
这是动画:
UIView.animateKeyframesWithDuration(
0.5,
delay: 0.0,
options: [.Repeat, .Autoreverse, .AllowUserInteraction],
animations:
self.stateLabel.alpha = 0.5
, completion: nil)
我在名为 setup() 的方法中启动此动画,该方法是我的自定义单元类(继承自 UITableViewCell
)的实例方法。正如我所说,还有另一个动画表现相同,它会震动图像视图,所以我很肯定这与褪色动画无关。
我在出队后在cellForRowAtIndexPath
方法中调用setup()
方法。
我尝试的是在willDisplayCell
方法中运行这个setup()
方法,但结果是一样的(我当然不是在这个方法中出列单元格)。
我也尝试了断点,并执行了动画代码。只是,当单元格重新出现时,动画不会开始。那么问题来了,当单元格再次出现时,如何重新启动/继续动画?
【问题讨论】:
确保在运行此动画之前重置 alpha 值。您可以在cellForRowAtIndexPath
中进行操作。我的猜测是,一旦您显示一个单元格并滚动回该单元格,该值将保持不变,因此不会发生动画。
@Ayazmon 就是这样。如果您做出回答,我将非常乐意接受并支持它:)
很高兴它有帮助:) 我写了一个答案,基本上告诉了动画单元格的生命周期。
真棒问题我的问题得到了解决方案 真棒:)
【参考方案1】:
问题在于 UI 元素在显示后没有重置 alpha 值。因为如果正在使用dequeueReusableCellWithIdentifier
函数,UITableView
将恢复但不会重新创建单元格。因此,重置 cellForRowAtIndexPath
的 alpha 值并为 willDisplayCell
中的视图设置动画将解决您面临的问题。
【讨论】:
以上是关于单元格消失时动画停止,再次出现时动画停止的主要内容,如果未能解决你的问题,请参考以下文章