我正在使用简单的动画(实际上是其中两个,但为了简单起见只显示一个),它会不断淡入,并淡化标签。因此,当我以一种动画单元格消失,然后向后滚动的方式滚动tableview时,这些单元格不再是动画。
这是动画:
UIView.animateKeyframesWithDuration(
0.5,
delay: 0.0,
options: [.Repeat, .Autoreverse, .AllowUserInteraction],
animations: {
self.stateLabel.alpha = 0.5
}, completion: nil)
我在名为setup()的方法中启动此动画,该方法是我的自定义单元类(继承自UITableViewCell
)的实例方法。正如我所说,还有另一个动画表现相同,它会震动图像视图,所以我很肯定这与衰落的动画类似无关。
我出列后在setup()
方法中调用cellForRowAtIndexPath
方法。
我尝试过在setup()
方法中运行此willDisplayCell
方法,但结果是一样的(当然,我不会在此方法中将单元格排队)。
我也试过断点,然后执行动画代码。只是,当细胞重新出现时,动画不会启动。所以问题是,当单元格再次出现时如何重新启动/继续动画?
答案 0 :(得分:1)
问题是在显示后没有重置UI元素的alpha值。因为如果使用UITableView
函数,dequeueReusableCellWithIdentifier
将恢复但不会重新创建单元格。因此,重置cellForRowAtIndexPath
上的Alpha值并为willDisplayCell
中的视图设置动画可以解决您遇到的问题。