+-
在我的主视图中,动画按照设置的延迟和持续时间执行。然而,当我切换到一个新的视图时,所有的动画都会立即完成。这是怎么回事?只有当这个动画从viewDidLoad()的代码中被告知要执行时,才会发生这种情况。
override func viewDidLoad() {
super.viewDidLoad()
setProgress()
}
// the function below annimates a circular progress view
func setProgress() {
var to:Double = ((360.0 / 4) * increment)
progressCircle.animateFromAngle(360.0, toAngle: to, duration: 5) { completed in
if completed {
print("animation stopped, completed")
} else {
print("animation stopped, was interrupted")
}
}
}
2
投票
投票
viewDidLoad
发生在视图显示在屏幕上之前,如果你想运行动画,你可能应该把它们运行在 viewDidAppear
以便在屏幕上加载视图,并使组件可见。
0
投票
投票
在viewDiDAppear中调用setProgress()。
override public func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
setProgress()
}
0
投票
投票
也许你可以在控制器的viewdidload事件后添加延时并让它在计时器上运行。因此,你可以达到你的目标,并在你想要的时间内运行动画。