State
- ビューの状態を管理する。状態が変更されるとビューが再描画される。
@State private var count: Int = 0
Binding
- 親ビューと子ビュー間でデータを双方向にバインディングする。
@Binding var isOn: Bool
ObserverObject
- 外部のObservableObjectを監視する。通常、ビューの外で管理されるデータを使用する。
@ObserverObject var viewModel = MyViewModel()
Environment
- 親ビューから提供された環境値を受け取る。テーマや設定など、ビュー階層全体で共有されるデータを使用する。
@Environment(\.colorScheme) var colorScheme
EnvironmentObject
- 環境オブジェクトを使ってビュー階層全体にデータを渡す。ObservableObjectに準拠したオブジェクトを使う。
@EnvironmentObject var userSettings: UserSettings
Published
- ObservableObject内のプロパティに使い、そのプロパティが更新されるとビューが更新される。
@Published var name = ""
StateObject
- ObservadbleObjectのインスタンスをビュー内で管理し、状態を保持する。インスタンスはビューのライフサイクル内で作成される。
@StateObject var viewModel = MyViewModel()
AppStorage
- ユーザー設定をUserDefaultsと連携して管理する。アプリケーションの設定などを保存するのに便利。
@AppStorage("userTheme") private var theme: String = "light"
MainActor
- 非同期操作をメインスレッドで実行することを指定する。UIの更新などがメインスレッドで行われることを保証する。
@MainActor func updateUI() {
// メインスレッドでUI更新
}
ViewBuilder
- 複数のビューを条件に応じて組み合わせる際に使用する。ビューのクロージャーを組み立てる。
@ViewBuilder var body: some View {
if isLoggedIn {
Text("Welcome back!")
} else {
Text("please log in")
}
}
ScaledMetric
- アクセシビリティ設定に基づいてスケーリングされるサイズを取得する。ユーザーの設定に合わせて自動的にサイズが調整される。
@ScaledMetic(relativeTo: .body) var fontSize: CGFlote = 16
Transaction
- トランザクション内でプロパティを操作し、状態変更を効率的に管理する。
@Transaction var transactionValue: Int = 0
FocusState
- フォーカスされている入力フィールドやビューを管理する。フォームなどで現在どのフィールドにフォーカスがあるかを追跡する。
@FocusState private var focusedField: Field?
GestureState
- ジェスチャー(タップ、ドラッグなど)の状態を追跡する。進行中のジェスチャーの情報を反映させるのに使う。
@GestureState private var dragOffset = CGSiza.zero
StateObject
- 新しいObservableObjectを作成し、それをビューないで保持する。状態はビューのライフサイクルを通じて維持される。
@StateObject var viewModel = MyViewModel()