[SwiftUI]画面遷移でスライドダウンアニメーションをするには?

SwiftUI

どうも、ちょげ(@chogetarou)です。

画面遷移で上から下にスライドするアニメーションをする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

画面遷移でスライドダウンアニメーションをするには、AnyTransition.moveを使います。

まず、画面遷移先にtransition修飾子を付与します。

そして、transition修飾子の引数には、「.move(edge: .top)」を指定します。

SecondView(・・・)
   .transition(.move(edge: .top))

あとは、画面遷移の処理をwithAnimation内に入れます。

withAnimation {
    //画面遷移
}

AnyTransition.move(edge: .top)は、上からスライドして画面を表示し、上へスライドして画面を非表示にします。。

もし、上からスライドで表示して、そのまま下に向かってスライドして非表示にしたい場合は、asynmetricをつかいます。

SecondView(isShow: $isShow)
    .transition(.asymmetric(
         insertion: .move(edge: .top),
         removal: .move(edge: .bottom))
    )

使用例

struct ContentView: View {
    @State var isShow = false
    var body: some View {
        ZStack {
            VStack {
                Button(action: {
                    withAnimation {
                        self.isShow.toggle()
                    }
                }) {
                    Text("Navigate")
                }
            }
            
            if isShow {
                SecondView(isShow: $isShow)
                    .transition(.move(edge: .top))
            }
        }
    }
}

struct SecondView : View {
    @Binding var isShow : Bool
    var body: some View {
        ZStack {
            Rectangle()
                .foregroundColor(.black)
            VStack {
                Button("Back") {
                    withAnimation {
                        self.isShow.toggle()
                    }
                }
            }
        }
    }
}
オススメの記事

[SwiftUI]アニメーションを移動に追加するには?

[SwiftUI]Buttonにタップアニメーションを付けるには?

[SwiftUI]Toggleでアニメーションをするには?

[SwiftUI]フェードインのアニメーションをする方法

コメント

タイトルとURLをコピーしました