无论持续时间和延迟如何,动画都会立即完成

时间:2016-09-13 05:24:19

标签: ios swift animation

我有这个动画块,但cell背景颜色立即为clear

cell.mylabel.backgroundColor = .orange
UIView.animate(withDuration: 3.0, delay:3, animations: {
    cell.mylabel.backgroundColor = .clear
})

重点是我在cellForRowAt

中运行此功能

我尝试将动画移动到我的自定义单元格,但没有再次成功:

override func didMoveToWindow() {
            UIView.animate(withDuration: 3.0, delay:3, animations: {
                self.mylabel.backgroundColor = .clear
            })
    }

2 个答案:

答案 0 :(得分:2)

  

重点是我在cellForRowAt

中运行此功能

现在还为时过早,因为单元格可能尚未出现在屏幕视图层次结构中。您只能为屏幕视图层次结构中的视图设置动画。在将单元格添加为表视图的子视图后,您需要找到一种添加动画的方法。

我会创建一个自定义UITableViewCell子类。在子类中,我将覆盖didMoveToWindow以将动画添加到self

或者,它可能会覆盖表视图控制器中的viewDidLayoutSubviews(如果有的话),并在该方法中添加动画。

答案 1 :(得分:1)

试试这个,

cell.mylabel.layer.backgroundColor = UIColor.redColor().CGColor
UIView.animate(withDuration: 3.0, delay:3, animations: {
    cell.mylabel.layer.backgroundColor = UIColor.clearColor().CGColor
})