#Previewでプレビューの定義が簡素化
Xcode15 および Swift5.9 以降では、#Previewを使用して SwiftUI ビューの作成の定義を簡素化することができます!これはWWDC2023リリースで導入されたSwift macrosの概念を使用しています。
Swift macrosとは
Swift macrosは、ソースコードのコンパイル時にコードを変換し、その部分を生成することで、Swiftで繰り返しコードを作成することを回避できます。マクロの呼び出しは、常に加算操作です。つまり、マクロは新しいコードを追加しますが、既存のコードを削除したり修正したりすることはありません。
SwiftUI #Previewの作成の比較
旧: 以前は、プレビュー構成を次のように記述していました!
ContentView.swift
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Text("Hello, world!")
}
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
新: Xcode15以降、SwiftUI ビューのプレビューを作成するには、次のように実行できます!
ContentView.swift
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Text("Hello, world!")
}
.padding()
}
}
#Preview {
ContentView()
}
マクロを使用すると、プレビューの定義が簡素化することができる!
また、プレビューのタイトルを簡単に指定できるようになるというメリットもある!
複数のプレビューを定義する
ContentView.swift
import SwiftUI
struct ContentView: View {
var title: String
var body: some View {
VStack {
Text(title)
.font(.title)
}
.padding()
}
}
#Preview("Yes Preview") {
ContentView(title: "Yes")
}
#Preview("No Preview") {
ContentView(title: "No")
}
#Preview("プレビューのタイトル")で、簡単にプレビューのタイトルが指定できる!
プレビューするビューごとに #Preview マクロを使用する!
以下のようにYes PreviewとNo Previewが作成されました!
参考文献