当细胞消失时动画停止,再次出现时不恢复

时间:2016-09-20 09:34:11

标签: swift uitableview animation uiview uikit

我正在使用简单的动画(实际上是其中两个,但为了简单起见只显示一个),它会不断淡入,并淡化标签。因此,当我以一种动画单元格消失,然后向后滚动的方式滚动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方法,但结果是一样的(当然,我不会在此方法中将单元格排队)。

我也试过断点,然后执行动画代码。只是,当细胞重新出现时,动画不会启动。所以问题是,当单元格再次出现时如何重新启动/继续动画?

1 个答案:

答案 0 :(得分:1)

问题是在显示后没有重置UI元素的alpha值。因为如果使用UITableView函数,dequeueReusableCellWithIdentifier将恢复但不会重新创建单元格。因此,重置cellForRowAtIndexPath上的Alpha值并为willDisplayCell中的视图设置动画可以解决您遇到的问题。