異なるビュー間のスライド遷移をアニメーション化するにはどうすればよいですか?
次のサンプル コードでは、表示するビューを選択するピッカーを作成しました。私の目標は、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)
}
}
}