SwiftUIでサポートされているUIコンポーネント一覧 #WWDC19

SwiftUIでサポートされているUIコンポーネント

SwiftUI はWWDC 2019のキーノートで発表された iOS/MacアプリなどのUIを構築するためのフレームワーク です。デベロッパーフレンドリーなコーディング&直感的なデザインツールの組み合わせで、超簡単にUIを構築できる特長があります。

調べてみるとSwiftUIではこれまでUIKitで提供されてきたUIコンポーネントの多くはカバーしているものの、全てではないことが分かりました。ということで、どのようなUIコンポーネントが利用できるのか気になったので調べました。調べた結論としては、単純に書きやすい形にしているだけではなく これまで提供されてきたUIコンポーネント群を集約し再定義している ような印象を受けました。これまで悩ましかったUI実装上の課題を大きく解決してくれるように思います。

なお、UIKitを組み合わせてコーディングすることが可能なので(後述)、SwiftUIベースで作ったからといってUIKitの機能が使えない、というわけではないです。

UIコンポーネント一覧

以下、こちらこちらを参考にカテゴリに分けながら見ていきます。

最重要コンポーネント

View

表示するビューの基本の型です。カスタムビューを作る場合など、アプリのUIを構築する上で必ずといっていいほど使用します。

テキスト

Text

文字表示を行うコンポーネントです。リードオンリーなテキストを表示します。Labelと同義です。

TextField

文字入力を行うコンポーネントです。

SecureField

プライベートなテキスト情報の文字入力を行うコンポーネントです。

画像

Image

画像を表示するコンポーネントです。

ボタン

Button

通常のボタンです。

PullDownButton

プルダウンメニューを表示するボタンです。

ItemBasedPopupButton

ポップアップ表示を行うボタンです。

NavigationButton

ナビゲーション操作をトリガーするボタンです。

PresentationButton

コンテンツを表示するボタンです。

EditButton

編集ボタンです。

PasteButton

ペーストボード(クリップボード内のデータ)を読み取るボタンです。

値の操作

Toggle

ON/OFFを制御するコンポーネントです。

Picker

リストから選択するコンポーネントです。

DatePicker

日時を選択するコンポーネントです。

Slider

ある範囲の中の値を選択するコンポーネントです。

Stepper

数値をステップで上下するコンポーネントです。

SegmentedControl

いくつかの候補の中から1つ選択を行うコンポーネントです。

スタック

HStack

横軸にビューを並べるコンポーネントです。

VStack

縦軸にビューを並べるコンポーネントです。

ZStack

Z軸にビューを並べるコンポーネントです。

リスト・スクロール

List

一覧を構築するコンポーネントです。

ScrollView

1画面に収まらないようなコンテンツをスクロールで表示できるようにするコンポーネントです。

コンテナ

Group

ビューのまとまりを表現するコンポーネントです。

GroupBox

ラベルとコンテンツの組み合わせを表現するコンポーネントです。

Section

ビューの階層を表現するコンポーネントです。

スペーサー・ディバイダー

Spacer

ビュー間の余白を作るコンポーネントです。

Divider

ビュー間の区切りを作るコンポーネントです。

構造ビュー

NavigationView

ビューをスタックさせるビューです。Navigation Controllerの代替です。

TabbedView

ビューをフラットにタブとして切り替えるビューです。TabBar Controllerの代替です。

HSplitView

横軸にビューを分けるビューです。Split View Controllerの代替です。

VSplitView

縦軸にビューを分けるビューです。Split View Controllerの代替です。

プレゼンテーション

Alert

アラートを表示します。

Modal

モーダルビューを表示します。

Popover

ポップオーバーのビューを表示します。

ActionSheet

アクションを求めるシートを表示します。

条件付きのビュー

ConditionalContent

2つのビューのうち、いずれか1つを表示するビューです。

EmptyView

エンプティステートを表現するビューです。

EquatableView

ある値について、以前の値と新しい値を比較して変化があった場合だけ子のビューを更新する機能を持ったビューです。

使用頻度の低いビュー

AnyView

何かしらのビューです。曖昧に扱いたい場合に使用します。

TupleView

ビューのタプルを表現するビューです。

IDView

ユニークなIDが振られたビューです。追加・削除が行われるビューに使用します。

SwiftUIをベースにUIを構築しよう

こうやってみると、単純に置き換えではなく、既存のUIコンポーネントの考え方を集約し、再定義するような形のUIコンポーネントが目立ちます。今までの考え方を元にしながら、複雑になってしまったところを簡略化しつつ使いやすい形でまとまっているような印象を受けました。

上記には含まれないUIコンポーネントはいくつかありますが、SwiftUIではUIKitと組み合わせて利用することができます。詳しくは以下のチュートリアルを参照してください。

これからのiOSアプリは間違いなくSwiftUIが基本になると思うので、今から各UIコンポーネントをどのように使うのか把握しておきましょう。