はじめに
本記事は iOS Advent Calendar 2022 の16日目の記事です。
昨日は @am10 さんで「Vision.frameworkでクレジットカード番号を読取る(Swift)」でした。
iOS 14.0以降で使えるSwiftUIの主なAPIを、OSバージョンごとに紹介します。
担当アプリのサポートバージョンが更新された際、新しく使えるAPIの確認に使っていただけると幸いです。
環境
- OS:macOS Ventura 13.2
- Xcode:14.3 (14E222b)
- Swift:5.8
iOS 14.0+
StateObject
@StateObject
を付けることで ObservableObject
をインスタンス化できます。
iOS 13以前では @ObservedObject
を使うしかありませんでした。
onChange(of:perform:)
対象の値が変更されたときに、指定した処理を実行します。
SceneStorage
永続化されたシーンごとのストレージに読み書きするプロパティラッパーです。
AppStorage
UserDefaultsに読み書きするプロパティラッパーです。
Label
タイトル付きのアイコンです。
画像と文字列に関連性をもたせられます。
LazyHGrid
遅延読み込みする水平方向のグリッドです。
LazyVGrid
遅延読み込みする垂直方向のグリッドです。
GroupBox
グルーピングするためのコントロールです。
DisclosureGroup
コンテンツを折りたたみ・展開するためのコントロールです。
ColorPicker
色を選択するためのコントロールです。
navigationTitle(_:)
ナビゲーションバーにタイトルを表示します。
navigationBarTitleDisplayMode(_:)
ナビゲーションバーのタイトルの表示方法を指定します。
fullScreenCover(isPresented:onDismiss:content:)
sheet
のフルスクリーン版です。
sheet
と異なり、閉じる処理を自前で実装する必要があります。
toolbar(content:)
ツールバーにコンテンツを表示します。
ToolbarItem
ツールバーに表示するアイテムを表すモデルです。
Menu
アクションメニューを表示するためのコントロールです。
accessibilityAddTraits(_:)
指定した特性をビューに追加します。
.onTapGesture { ... }
と .accessibilityAddTraits(.isButton)
を組み合わせて使うことが多いです。
accessibility(addTraits:)
はiOS 16.4で非推奨になり、代わりに accessibilityAddTraits(_:)
を使います。
iOS 15.0+
dismiss
ビューを閉じる環境値です。
表示されたビュー側から画面を閉じる際に使うと便利です。
PresentationMode
はiOS 16.4で非推奨になり、代わりに dismiss
または isPresented
を使います。
isPresented
ビューが表示されているかどうかを示す環境値です。
task(priority:_:)
ビューの表示前に実行する非同期タスクを追加します。
refreshable(action:)
リフレッシュできるようにします。
searchable(text:placement:prompt:)
検索できるようにします。
swipeActions(edge:allowsFullSwipe:content:)
リストの行にカスタムスワイプアクションを追加します。
selection
選択状態を視覚的に表すためのスタイルです。
textSelection(_:)
テキストを選択できるようにします。
tint(_:)
ビューの色合いを設定します。
accentcolor(_:)
はiOS 16.4で非推奨になり、代わりに tint(_:)
を使います。
badge(_:)
整数からビューのバッジを生成します。
リストの行とタブバーにのみ表示されます。
alert(_:isPresented:presenting:actions:message:)
アラートです。
FocusState
フォーカス状態のプロパティラッパーです。
focused(_:equals:)
フォーカス状態によってフォーカスを切り替えるモディファイアです。
AsyncImage
画像を非同期で読み込んで表示するビューです。
TimelineView
指定したスケジュールに従って更新されるビューです。
LocationButton
1回のみ位置認証を許可するボタンです。
Material
背景素材の一種です。
iOS 16.0+
Swift Charts
棒グラフや折れ線グラフなどを作成するフレームワークです。
NavigationStack
ビューをスタックしてプッシュ遷移できるようにするビューです。
NavigationView
はiOS 16.4で非推奨になり、代わりに NavigationStack
または NavigationSplitView
を使います。
NavigationSplitView
ビューを2または3列で表示するビューです。
TextField(_:text:axis:)
TextFieldでtextの文字列が長いとき、入力欄がスクロールせずに水平または垂直方向に広がるようになりました。
presentationDetents(_:)
シートのサイズが止まる箇所をセットで指定します。
いわゆる「ハーフモーダル」を簡単に実装できるようになりました。
presentationDragIndicator(_:)
シートでドラッグインジケーター(いわゆる「grab bar」)の可視性を切り替えます。
scrollDismissesKeyboard(_:)
スクロール時に自動でキーボードを隠せます。
scrollContentBackground(_:)
スクロールできるビューの背景の可視性を切り替えます。
List
の標準のシステム背景を非表示にできます。
scrollDisabled(_:)
スクロールできるかどうかを切り替えます。
scrollIndicators(_:axes:)
スクロールバーの可視性を切り替えます。
Grid
ビューを2次元のレイアウトで表示するビューです。
Gauge
範囲内の値を表示するビューです。
LabeledContent
ラベル付きのビューです。
ShareLink
共有画面を表示するリンクです。
UIActivityViewController
を使わずに表示できるようになりました。
AnyLayout
Layout
プロトコルの型消去型です。
AnyShape
Shape
プロトコルの型消去型です。
ImageRenderer
TBD
おわりに
いわゆるSwiftUI 2.0以降に使えるAPIの紹介でした。
他にもよく使うAPIがありましたら、コメントなどで教えてくださると嬉しいです
以上 iOS Advent Calendar 2022 の16日目の記事でした。
明日は埋まっていません。