+-
在新的视图中,迅速的动画瞬间发生。

在我的主视图中,动画按照设置的延迟和持续时间执行。然而,当我切换到一个新的视图时,所有的动画都会立即完成。这是怎么回事?只有当这个动画从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事件后添加延时并让它在计时器上运行。因此,你可以达到你的目标,并在你想要的时间内运行动画。