我创建了一个自定义视图,当用户可以看到它时,它应该有一个动画(它无休止地旋转)。
我把它放在awakeFromNib
函数中,但我不确定这是不是正确的地方,因为有时(不幸的是不定期)动画没有开始。
代码:
override func awakeFromNib() {
UIView.animate(withDuration: 1) {
// property changes here
}
}
这是正确的地方还是我可以使用更好的功能?
答案 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
),其超级视图将会更改,因此将再次调用此方法(因为超级视图的变化)。