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 を使用しています