2017-08-06 2 views
2

私のアプリを開くと、このラベルが画面外からアニメーション化されます。最初にView Controllerを開くと機能します。しかし、ときに私は別のビューコントローラに移動して、このラベルはただそこにあることとしてアニメーション化しませんバック初期ビューコントローラへ行く。これを開いた後にビューコントローラーに戻ると、ラベルにアニメートされません。Xcode Swift

levelsLabel.center = CGPoint(x:levelsLabel.center.x - 500, y:levelsLabel.center.y) 

    UIView.animate(withDuration: 2) { 

     self.levelsLabel.center = CGPoint(x:self.levelsLabel.center.x + 500, y:self.levelsLabel.center.y) 

    } 

誰もが何か提案を持っています?ありがとうございました!

答えて

1

viewDidLoadではなく、viewWillAppearにコードブロックを配置すると機能します。しかし、Apple Docによると。

viewDidAppear:ビューは、このような データをフェッチまたはアニメーションを示すように、画面上に提示されるとすぐに発生する を必要なオペレーションをトリガするために、この方法を使用します。

以下は私がお勧めするものです。

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

     levelsLabel.center = CGPoint(x:levelsLabel.center.x - 500, y:levelsLabel.center.y) 
    } 

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

     UIView.animate(withDuration: 2) { 
      self.levelsLabel.center = CGPoint(x:self.levelsLabel.center.x + 500, y:self.levelsLabel.center.y) 

     } 
    } 
+0

これは他のものに影響します – Reid

+0

「何か他のもの」がわかりません。このView Controllerのライフサイクル(https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/WorkWithViewControllers.html)を見てみるとよいでしょう。 @Lawlietは、urの答えに同意した。 – Lawliet

+0

しかし、私はUICollectionViewCellクラスでこれを実現するには、viewDidLoadと同じように、init(フレーム:CGRect)をオーバーライドするメソッドが1つしかないためです。プログラムでUICollectionViewCellクラスのためのviewDidAppearとして他のメソッドがありますか? – iajmeri43

関連する問題