(swift)新视图中的动画会立即发生

时间:2016-06-02 09:56:33

标签: ios xcode swift

我的主要观点之一,动画根据设置的延迟和持续时间执行。但是,当我转向新视图时,动画会立即完成。这怎么样?只有在通过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")
        }
    }

}

3 个答案:

答案 0 :(得分:2)

在视图显示在屏幕上之前发生

viewDidLoad,如果您想要运行动画,则应该在viewDidAppear中运行动画,以便在屏幕上加载视图并且组件可见。

答案 1 :(得分:0)

在viewDiDAppear中调用setProgress()

override public func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        setProgress()  
 }

答案 2 :(得分:0)

也许你可以在控制器的viewdidload事件之后添加延迟并使其在计时器上运行。因此,您可以达到目标并在您想要的时间内运行动画。