SwiftUIのプレビューがうまくいかない時はカラー定義を見直してみよう
これはなに?
SwiftUIで開発をしていると開発初期はプレビューを使い効率的に開発ができていたのですがコード量が増えたとたんプレビューが表示されなくなりました。
どういったコードを書くとプレビューが表示されなくなるのか気になったので調べてたものです。
開発環境
- Xcode12.3
- MacOS BigSur 11.0.1
どういったコードを書くとダメなのか
デフォルトで定義されているカラーを extension
で上書き使用するとプレビューが動かなくなります。
import SwiftUI struct ContentView: View { var body: some View { Text("Hello, world!") .foregroundColor(.primary) .padding() } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } extension Color { static let primary = Color("Primary") }
プレビュー画面
他にも .white
, .black
などがあります。今回サンプルに使った .primary
というプロジェクト内のカラー定義で使いたい名前もデフォルトで定義されています。
独自カラーは割り切ってプロジェクト名をPrefixにつけて色を管理すると被りづらくプレビューを使ったまま開発ができて良いと思います。