31
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

iOSAdvent Calendar 2022

Day 16

iOS 14.0以降で使える主なAPI(SwiftUI)

Last updated at Posted at 2022-12-15

はじめに

本記事は 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がありましたら、コメントなどで教えてくださると嬉しいです :relaxed:

以上 iOS Advent Calendar 2022 の16日目の記事でした。
明日は埋まっていません。

参考リンク

31
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?