1. ホーム
  2. ios

[解決済み] Swiftで簡単なフェードインアニメーションを作る?

2023-04-27 12:33:05

質問

Swiftで簡単なアニメーションを作ろうとしています。フェードインです。

私は試みました。

self.myFirstLabel.alpha = 0
self.myFirstButton.alpha = 0
self.mySecondButton.alpha = 0

では、あります。

self.view.addSubview(myFirstLabel)
self.view.addSubview(myFirstButton)
self.view.addSubview(mySecondButton)

そして

UIView.animateWithDuration(1.5, animations: {
 self.myFirstLabel.alpha = 1.0
 self.myFirstButton.alpha = 1.0
 self.mySecondButton.alpha = 1.0
})

viewDidLoad関数に全部書いてあります。

どのように私はこれを動作させるのですか?

どのように解決するのですか?

問題は、ビューコントローラのライフサイクルの早い段階でアニメーションを開始しようとしていることです。で viewDidLoad では、ビューは作成されたばかりで、まだビュー階層に追加されていません。 subviews の一つをアニメーション化しようとすると、悪い結果が出ます。

本当にすべきことは、ビューのアルファ値を viewDidLoad (またはビューを作成する場所) でビューのアルファ値を設定し続け、その後で viewDidAppear : メソッドが呼ばれるのを待ちます。この時点で、何の問題もなくアニメーションを開始することができます。

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

    UIView.animate(withDuration: 1.5) {
        self.myFirstLabel.alpha = 1.0
        self.myFirstButton.alpha = 1.0
        self.mySecondButton.alpha = 1.0
    }
}