20230329_114505
SwiftUI は、 4 つのコア原則の強力なセットで設計されています。
-
まず、宣言型の構文は、 UI プログラミングを画面の更新方法から切り離し、表示したいものだけに集中できるようにします。たとえば、見出しフォントと灰色のラベルを作成するとします。それを取得する方法を説明することは、特定の順序で行わなければならない多くのステップを伴う多段階プロセスです。しかし、あなたが望むものを説明するのに翻訳は必要ありません。灰色の見出しのフォントで「完了」と書かれたテキスト。SwiftUI では、優れた新しい宣言構文を使用して、まさにそれを表現できます。これは、アイデアを正確に説明するために必要な最小限のコードです。また、反復も大幅に高速化されます。後でそのラベルをボタンに変更する必要がある場合は、1行の変更。私は知っています、それはかなり素晴らしいです。
-
2 つ目の原則は、可能な限り自動機能を提供することです。これにより、手作業で作成する必要があった膨大な量のコードが不要になります。
macOS リリースに名前を付けるためのアプリは非常にシンプルですが、大量の自動機能が含まれています。間隔とセーフ エリア インセットのデフォルトの処理を取得します。右から左へ記述する言語のローカライズとレイアウトの調整。動的タイプ、ダークモードなど、すべてその 1 つの最小限の説明から。少量のコードでは信じられないほどの量の自動機能ですが、特別な注意が必要なほど重要なことがもう 1 つあります。
最新のインターフェイスはインタラクティブで、アニメーション化されています。また、SwiftUI では、同じインターフェイス宣言も自動的に完全にアニメーション化できます。
わずか1 行のコードで、階層全体に対してアニメーションを有効にすることができます。簿記も準備も後片付けもありません。以前にKeynote Magic Move アニメーションを使用したことがある場合、SwiftUIアニメーションは非常に簡単で、さらに強力です。
また、追加および削除されるビューについては、コードを 1 行追加するだけで、どのように移行するかを指定できます。アニメーションが進行している間、アプリは完全にインタラクティブで応答性が高く、いつでもユーザー入力を処理する準備ができています。また、ユーザーがこれらのアニメーションのいずれかを中断した場合や、新しい場所に移動する必要がある場合、SwiftUI はそのすべてを自動的に処理します。
- 3 番目の原則は、合成 API は習得が容易であり、イテレーションを大幅に高速化できるということです。
このテキスト ラベルのような個々のビューを宣言する方法を見てきました。しかし、より複雑なビューを宣言するのは簡単です。複数の小さなピースを一緒に構成するだけです。
水平スタックや垂直スタックなどのコンテナを使用すると、複数のシンプルなピースを組み合わせるだけで強力なレイアウトを簡単に構築できます。
また、SwiftUI は、標準の修飾子構文を使用して、コンポジションをビュー プロパティにも適用します。ここで色を適用してこのテキストを灰色にするなど、一般的な一連の修飾子を任意のビューに適用できます。
この合成アプローチにより、少数のビューと修飾子のセットを学習し、それらを組み合わせて、徐々に強力なインターフェイスを作成できます。
- そして最後の原則は、インターフェースは常に一貫した状態でなければならないということです。
UI はアプリのデータを反映しているため、この 2 つは常に同期している必要があります。従来の API では、これによりエラーが発生しやすくなります。しかし、SwiftUI を使用すると、データが変更されるたびにインターフェイスが自動的に更新されます。
ここで、データの取得元となる一般的な場所が 2 つあります。最初はモデルオブジェクトです。また、既存のモデル オブジェクトを新しいバインド可能なオブジェクト プロトコルに準拠させるだけで、既存のモデル オブジェクトを直接使用できます。その唯一の要件は、モデル内のデータがいつ変更されるかを指定することです。2 番目は、ビューが現在編集モードであるかどうかなど、一時的な UI 状態です。これらは、ビューの任意のプロパティに適用される単純な状態ラッパーを使用して宣言されます。
私たちは皆、すべてのビューのすべてのプロパティが変更可能であることに慣れていますが、SwiftUI を使い始めると、アプリが実際に必要とする変更可能な状態がどれほど少ないかに気付くことにショックを受けるでしょう。モデルまたは状態が変更されるたびに、その UI が自動的に更新されます。そして、それはすべて Swift コードであるため、そのインターフェース宣言内でモデル オブジェクトを直接使用できる一方で、この動作が得られます。
追加の間接化を必要とせずに、値をインラインで変換およびフォーマットすることもできます。
たとえば、この文字列補間を使用して日付をフォーマットすると、完全にローカライズされたフォーマット済みテキストになります。これはすべて、Swift UI を使用すると、記述するコードが少なくなり、より一貫性のある UI が得られることを意味します。
これらは、 SwiftUI の4 つのコア原則です。インターフェイスが常に一貫した状態であることを保証する合成 APIを使用して、膨大な量の自動機能を有効にする強力な宣言構文。