Xcode 15では、iOSアプリのユーザーインターフェースをビルド中にプレビューできるようになりました。この機能を使って、アプリがユーザーにどのように表示されるかを確認する方法をご紹介します。
Xcode 15 では UIプレビューが導入され、SwiftUI で構築するときにユーザー インターフェイスがどのように見えるかを確認できるようになりました。
特に、Xcode では、#PreviewSwiftUI アプリに追加する任意のビューまたはビューのプレビューの表示方法を定義できるマクロが追加されました。
Swift および C ベースの言語では、マクロはコンパイラーに特別なことが来ることを伝え、マクロで定義されたコードをコンパイル時に特別なケースとして扱うように指示するコンパイラー ディレクティブです。
コードをコンパイルすると、コンパイラはマクロの内容に基づいて、見つかったマクロをコードに変換します。マクロを使用すると、コードブロックを一度定義しておけば、アプリ内で複数回再利用できます。
SwiftUIでは、AppKitの旧来のInterface Builderのビジュアルビューとは異なり、テキストとテキストによるビューの定義を使用してアプリを定義できます。SwiftUIとプレビューを使用することで、左側のXcodeエディタパネルにコードを入力し、右側のXcodeシミュレータでプレビューを確認できます。
SwiftUI コードを入力して変更すると、UI プレビューがリアルタイムで変化し、ビューが表示されます。
これには、コードを変更するたびにコンパイル/ビルド/実行サイクルを実行しなくても、アプリがどのようになるかを確認できるという大きな利点があります。
通常、SwiftUIでは、 Swift を使用してContentViewの を定義できます。例:
Viewstruct
struct ContentView: View {
var body: some View {
// ...
}
}
#Previewその下には、デフォルトでは、Xcode がプレビュー ペインにビューを表示するために使用する ContentView を返すだけのマクロ
を定義できます。
#Preview {
ContentView()
}
#Previewこれは、Xcodeのプレビューペインにビューを表示するために指定するデフォルトのマクロです。また、#Preview各ビューのマクロにコードを追加することで、Xcodeにおけるビューの表示方法をさらにカスタマイズすることもできます。
コードをコンパイルすると、Swift コンパイラは実際にマクロを、オプションの名前と をパラメーターとして受け取る#PreviewSwift ステートメントに展開します。
"Preview(_:body:)"ViewBuilder
AViewBuilderは Swift@ViewBuilderキーワードによって定義され、Swift に対して、その後に続くのは表示する UI 要素であることを示します。
同じソース ファイルで複数のマクロを定義する場合は#Preview、それぞれを区別するために Swift として名前を渡すことができますString。
#Preview("Input true") {
ContentView(someInput: true)
}
SwiftUI のドキュメントには、マクロについて説明し、マクロと一緒に
#Preview使用する方法についても説明しているページもあります。ViewBuilder
一般に、#PreviewSwiftUI ソース ファイルで定義するカスタム ビューごとに 1 つのマクロを定義する必要があります。
作成するカスタム ビューごとにマクロを使用しない場合は、ビューごとにプレビュー プロバイダー#Previewプロトコルを提供する必要があります。これは、少し複雑なプロセスであり、追加のコードが必要になります。
プレビュー プロバイダーについては、以下の以前の記事で説明しましたので、ここでは再度説明しません。
#Preview各ビューのコードにマクロを定義したら、 Xcode のメイン メニュー バーから
[エディター] -> [キャンバス] を選択して、Xcode プレビュー キャンバスを表示できます。

エディター メニューからキャンバスを表示します。
一般に、Swift では、アプリ内のビューは Swift クラス によって定義されます。これは、Objective-C の またはObjective-C の macOS アプリ
Viewの と同義です。UIViewNSView
各 Swift にはView、 内に 1 つ以上のサブビューを含めることができますContentView。 はContentView、アプリの実行時に画面に表示されるビューです。
実は、Swiftでは、aはViewクラスではなく、構造体と構造体上のプロトコルの両方として定義されています。Swiftでは、構造体はクラスよりも柔軟性が高く、クラスのような動作をさせながら、データや動作を簡単に追加できます。
はprotocol、実装する必要がある構造体またはクラスに対して定義されたメソッドまたはプロパティのセットです。
Swift でカスタム ビューを提供するには、プロトコルに準拠する型を宣言しView、bodyビューのコンテンツを提供するために必要な計算プロパティを実装します。
例えば:
struct MyView: View {
var body: some View {
Text("Hello, World!")
}
}
この例では、Apple クラス から継承され、テキスト「Hello, World!」を含む単一のサブビューを持つ計算プロパティ( としても) を定義することでプロトコルに準拠する という名前MyViewのカスタム構造体を定義します。
ViewViewbodyViewText
Textこの構造体が実行されると、ユーザー インターフェイスに「Hello, World!」というテキストを含む
単一のビューが表示されます。
Apple はさまざまな定義済みビュー (などText) を提供しており、これをビューで使用してbodyUI を作成できます。
Xcode プレビュー キャンバスでは、構造体内のコードを変更するとMyView、キャンバスのビューがリアルタイムで更新され、変更内容が表示されます。
Xcodeプレビューを使うメリットは、アプリをビルドして実行しなくても、入力しながらXcodeでUIを確認できることです。これにより、開発時間を大幅に節約できます。
SwiftUI と Previews により、開発がより簡単かつ軽量になり、コードで UI を組み立てるために必要な手順の数が大幅に削減されます。
Xcode でのビューの動作の詳細については、Apple の SwiftUI ドキュメントのセクション「ビューの基礎」を参照してください。
ドキュメントとリソース
Apple は、WWDC '23 で公開した「Xcode プレビューを使用してプログラムによる UI を構築する」という 27 分間のビデオで、Xcode プレビューを使用して構築時に UI を確認する方法をまとめています。
Apple は、Xcode ドキュメントに「Xcode でアプリのインターフェースをプレビューする」というタイトルの、Xcode で開発するときに UI をプレビューする方法に関する完全なガイドを用意しています。
また、以前の記事「Xcode プレビューを使用して、作成したアプリがどのように表示されるかを確認する方法」もご覧ください。