0

異なるビュー間のスライド遷移をアニメーション化するにはどうすればよいですか?

次のサンプル コードでは、表示するビューを選択するピッカーを作成しました。私の目標は、NavigationLink トランジションに似たトランジションを作成することです。現時点では、まったくアニメーション化されていません。.animation(.easeInOut(duration: 2))モディファイヤを追加するZStackと、フェード アニメーションが 2 秒間アニメーション化されますが、その理由がわかりません。

struct ContentView: View {

    enum WhichScreen: String, CaseIterable {
        case red, blue, green, yellow
    }

    @State private var whichScreen = WhichScreen.red

    var body: some View {
        VStack {
            Picker("screen", selection: $whichScreen.animation()) {
                ForEach(WhichScreen.allCases, id: \.self) { value in
                    Text(value.rawValue).tag(value)
                }
            }
            .pickerStyle(SegmentedPickerStyle())
            ZStack {
                Color.black
                switch whichScreen {
                case .red:
                    Color.red
                case .blue:
                    Color.blue
                case .green:
                    Color.green
                case .yellow:
                    Color.yellow
                }
            }
            .transition(.slide)
        }
    }
}
4

2 に答える 2