12

SwiftUI で、あるビューから次のビューにスライドする NavigationView/NavigationLink の標準的な動作を変更する方法はありますか? フェードイン/フェードアウトのようなカスタム アニメーション/トランジションが必要です。

しばらく試してみて、半分は解決しましたが、後半に苦労しています。このコード:

struct ContentView: View {
    @State var appeared: Double = 0.0

    var body: some View {
        NavigationView {
            VStack {
                Text("\(appeared)")
                NavigationLink(destination: ViewB()) {Text("go to View B")}
            }
            .opacity(appeared)
            .animation(Animation.easeInOut(duration: 3.0), value: appeared)
            .onAppear {self.appeared = 1.0}
            .onDisappear {self.appeared = 0.0}
        }
    }
}

ビューが表示されたときに正しく動作します。3 秒以内に不透明度を 1.0 に変更してフェードインします。すべて良い。しかし、 をクリックしNavigationLinkてビュー B に移動すると、このビューがスライドして離れ、ビュー B (同じロジックを持つ) がゆっくりとフェードインします。onDisappearこれは、ビューが離れようとしているときではなく、ビューがなくなったときに実際にトリガーされるためだと思います。

SwiftUI にスワイプやスライドではなく、カスタム アニメーション/トランジションを行うように指示する機会はありますか?

Xcode 11.2.1 を使用しています

4

1 に答える 1