[SwiftUI] PreviewProviderで実行されているかを確認

確認環境

  • Xcode 12.5
  • iOS 14.5

SwiftUIでPreviewされているかをプログラムで確認する方法

PreviewでViewを表示している場合、環境変数のXCODE_RUNNING_FOR_PREVIEWSの値が"1"になっています。
なので、次のように場合分けをするとプログラム上Previewで表示されているかを判別できます。

var body: some View {
    if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
        Text("running on preview")
    } else {
        Text("running on not preview")
    }
}

実行するとキャンバス上でこのようなViewが表示されます。

シミュレーターではこうです。

うまく切り分けられましたね。

参考

ios - How do you check if SwiftUI is in preview mode? - Stack Overflow

宣伝

インプレスR&D社より、「1人でアプリを作る人を支えるSwiftUI開発レシピ」発売中です。
「SwiftUIでアプリを作る!」をコンセプトにSwiftUI自体の解説とそれを組み合わせた豊富なサンプルアプリでどんな風にアプリ実装すればいいかが理解できる本となっています。
iOS 14対応、Widgetの作成も一章まるまるハンズオンで解説しています。
SwiftUIを学びたい方、ぜひこちらのリンクをチェックしてください!




https://nextpublishing.jp/book/12491.html