🔹 トランジション(Transition)とは
簡単に言うと:
画面A → 画面B へ移動する時の “見せ方” のことです。
例えば:
フェードイン(ゆっくり現れる)
スライド(横にスッと移動)
スケール(拡大・縮小しながら表示)
🔹 SwiftUIでのトランジション例
SwiftUI では .transition() モディファイアで簡単に書けます。
✅ 基本例:フェードイン・フェードアウト
import SwiftUI
struct ContentView: View {
@State private var showBox = false
var body: some View {
VStack(spacing: 20) {
Button("切り替え") {
withAnimation {
showBox.toggle()
}
}
if showBox {
Rectangle()
.fill(Color.blue)
.frame(width: 200, height: 200)
.transition(.opacity) // ← フェードイン/アウト
}
}
}
}
🌀 withAnimation { … }
➡️ アニメーション付きで状態を切り替える、という意味です。
✅ 別のトランジション例
トランジション名 動き
.slide 横からスライドイン/アウト
.scale 拡大・縮小
.move(edge: .bottom) 下から出てくる
.opacity フェードイン/アウト
.asymmetric 表示と非表示で違う動き
例:
.transition(.move(edge: .bottom))
✅ 複合トランジション
2つ以上組み合わせも可能です:
.transition(.move(edge: .bottom).combined(with: .opacity))
これで「下からスライドしながらフェードイン」が実現できます。
🔹 Navigationトランジション
もう一つ、「NavigationView」などでページ遷移するときにも自動的にトランジションが入ります。
例:
NavigationLink(destination: NextView()) {
Text("次へ")
}
➡️ デフォルトで 右から左へスライドイン
(戻るときは左から右へ)
UIKit時代だと UIViewController の present(_:animated:) などを使ってトランジションを細かく制御しましたが、
SwiftUI では シンプルな構文 で済むようになっています。
🔹 まとめ
用語 意味
トランジション(Transition) 画面や要素が出入りする動き(アニメーション)
アニメーション(Animation) 値や状態の変化に伴う動き
withAnimation 状態変更をアニメーションで包む構文