🔍

SwiftUI でCanvas Preview 実行中かどうかを判定する

2021/03/22に公開

SwiftUI の開発している時、Xcode のCanvas でPreview を表示します。
開発中にView の状態を変えたい場合、Preview 実行中かどうかを判定できると便利です。

Preview 実行中かどうかを判定する

Preview 実行中かどうかは、以下のコードで判定できます。

func isPreview() -> Bool {
    return ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1"
}

Preview 実行中なら任意の処理を行う

例えば、初期状態でアラートを表示する仕様のView があるとします。

@State private var showingAlert = Bool(true)

プレビューの時だけ、アラートを非表示にできます。

.onAppear() {
  if isPreview() {
    showingAlert = false
  }
}

所感

View を細かく分割するほどでもないという時に、開発中に一時的に使うのがいいのかなと思いました。
プレビューをいい感じにする方法には、今回の判定処理を使う方法の他に、PreviewProvider でView を初期化する際に初期値を渡す方法があります。

Discussion