【问题标题】:Xcode Swift - continuing animation after returning to viewXcode Swift - 返回视图后继续动画
【发布时间】:2017-05-16 02:06:48
【问题描述】:

标题可能有点含糊,所以我会直截了当。在我的 Xcode 项目中,我在初始 ViewController 中实现了一个简单的动画,它运行良好,但是在离开初始视图并移动到另一个场景,然后返回初始视图后,动画无法重新启动,我可以'不知道为什么。

这是我最初认为的相关代码

     override func viewDidAppear(_ animated: Bool) {
     super.viewDidAppear(animated)

        //cloud animation
        let oldCenter = cloud.center
        let newCenter = CGPoint(x: oldCenter.x - 800, y: oldCenter.y)
        UIView.animate(withDuration: 30.0, delay: 0.0, options:
            [.curveLinear, .repeat], animations: {
                self.cloud.center = newCenter
        }, completion: nil)
        //second cloud animation
        let oldCenter2 = cloud2.center
        let newCenter2 = CGPoint(x: oldCenter2.x + 800, y: oldCenter2.y)
        UIView.animate(withDuration: 15.0, delay: 0.0, options:
            [.curveLinear, .repeat], animations: {
                self.cloud2.center = newCenter2
        }, completion: nil)

    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
    }

【问题讨论】:

    标签: ios swift xcode animation swift3


    【解决方案1】:

    您应该将云的位置重置为它们在viewDidDisappear 中的原始中心:

    var originalCenter: CGPoint!
    var originalCenter2: CGPoint!
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        originalCenter = cloud.center
        originalCenter2 = cloud2.center
        ...
    }
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        // restore positions
        cloud.center = originalCenter
        cloud2.center = originalCenter2
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-23
      • 2014-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      相关资源
      最近更新 更多