在显示的自定义视图中调用动画的位置

时间:2018-05-04 19:49:22

标签: ios swift uikit

我创建了一个自定义视图,当用户可以看到它时,它应该有一个动画(它无休止地旋转)。

我把它放在awakeFromNib函数中,但我不确定这是不是正确的地方,因为有时(不幸的是不定期)动画没有开始。

代码:

override func awakeFromNib() {
  UIView.animate(withDuration: 1) {
    // property changes here
  }
}

这是正确的地方还是我可以使用更好的功能?

2 个答案:

答案 0 :(得分:2)

我认为最好在自定义类中创建一个func,比如startAnimation,然后执行

customView.startAnimation()

在你添加它的VC的viewDidAppear中,以确保customView及其父视图完全布局

答案 1 :(得分:1)

awakeFromNib是个好地方。更好的方法是在将自定义视图添加为视图的子视图后开始设置动画,如下所示:

override func didMoveToSuperview() {
    UIView.animate(withDuration: 1) {
        // Your animation
    }
}

因此,无论何时拨打addSubview,动画都会开始播放。

注意:

  

子类可以覆盖didMoveToSuperview以便在每次执行时执行其他操作   超视变化。

如果您将自定义视图移动到subviews的任何其他索引(例如,通过bringSubviewToFront),其超级视图将会更改,因此将再次调用此方法(因为超级视图的变化)。