2017-05-16 6 views
1

タイトルは多少あいまいなので、私はすぐにその点に着きます。私のXcodeプロジェクトでは、最初のViewControllerで単純なアニメーションを実装しましたが、最初のViewを終了して別のシーンに移動してから最初のビューに戻ると、アニメーションが再開できず、理由を理解できない。Xcodeスウィフト - ビューに戻るとアニメーションを続ける

ここであなたがviewDidDisappearで元のセンターに雲の位置をリセットする必要があり、私の最初のビュー

 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) 
    } 

答えて

1

から該当するコードです:

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 
} 
関連する問題