LoginSignup
7
5

More than 3 years have passed since last update.

SwiftUIのプレビューデバイスを設定する方法

Last updated at Posted at 2020-02-20

SwiftUIのプレビューデバイスを設定する方法

SwiftUIで開発している時、特定の端末または複数の端末でプレビューをみたい時がありますよね。そんな願いを叶える方法です。(SwiftUIチュートリアルをやったことある人は知っているはず)

次のコード内の2つ目のstructのSwiftUIView_Previewsがプレビューに関するコードです。この部分にコードを加えて、プレビューデバイスを設定します。

SwiftUIView.swift
import SwiftUI

struct SwiftUIView: View {
    var body: some View {
        Text("Hello, World!")
    }
}

/// 以下のコードがプレビューに関するコード
struct SwiftUIView_Previews: PreviewProvider {
    static var previews: some View {
        SwiftUIView()
    }
}

1 特定の端末のプレビューデバイスを設定する

1-1 実装方法

SwiftUIView.swift
struct SwiftUIView_Previews: PreviewProvider {
    static var previews: some View {
        SwiftUIView()
            /// 以下の行を追加
            .previewDevice(PreviewDevice(rawValue: "iPhone X"))
    }
}

1-2 実行結果

スクリーンショット 2020-02-20 21.58.11.png

1-3 解説

.previewDeviceのrawValueに端末を指定すれば、プレビューデバイスを設定できます。設定できるデバイス例 → 3 設定できる端末例

2 複数の端末のプレビューデバイスを設定する

2-1 実装方法

SwiftUIView.swift
struct SwiftUIView_Previews: PreviewProvider {
    static var previews: some View {
        /// 以下の行を追加
        ForEach(["iPhone SE", "iPhone XS Max", "iPhone X"], id: \.self) { deviceName in
            SwiftUIView()
                /// 以下の2行を追加
                .previewDevice(PreviewDevice(rawValue: deviceName))
                .previewDisplayName(deviceName)
        }
    }
}

2-2 実行結果

スクリーンショット 2020-02-20 21.44.41.png

2-3 解説

ForEachに端末の配列を渡して、反復処理の実行ごとに.previewDeviceのrawValueに端末を指定し、プレビューを表示させています。なお、「id: .self」は配列の要素が一意であることをSwiftUIに知らせるためのもので必須です。
.previewDisplayName(deviceName)では右側のプレビューで表示される端末の下の端末名を指定しています。これを設定しないと、全て「Preview」と表示されます。複数の端末のプレビューデバイスを設定する際は必要だと思います。

3 設定できる端末例

端末一覧(iPhoneのみ).swift
"iPhone 7"
"iPhone 7 Plus"
"iPhone 8"
"iPhone 8 Plus"
"iPhone SE"
"iPhone X"
"iPhone Xs"
"iPhone Xs Max"
"iPhone Xʀ"

4 プレビューデバイスを設定を設定していない場合は?

TARGETSのDeployment Info内のDeviceからXcodeが自動選択しているようです。

5 参考ページ

AppleDevelopper(.previewDeviceについて)
Hacking with Swift(id: .selfについて)

7
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5