SwiftUI公式チュートリアル(8)

8.動的に生成されたプレビュー

次に、我々はよ  LandmarkList_Previews 異なるデバイスサイズのリストをレンダリングするためのコードを追加します。デフォルトでは、現在のプレビュー  scheme デバイスの描画サイズ。私たちは、呼び出すことができ  previewDevice(_:) 、プレビューデバイス方法を変更します。SwiftUI公式チュートリアル

8.1まず、現在の変更  list iPhone SEの大きさを示すために、プレビューを。

私たちはどんなXcodeの入力することができ  scheme 、メニューに表示されるデバイス名を。

LandmarkList.swift

import SwiftUI

struct LandmarkList: View {
    var body: some View {
        NavigationView {
            List(landmarkData) { landmark in
                NavigationButton(destination: LandmarkDetail(landmark: landmark)) {
                    LandmarkRow(landmark: landmark)
                }
            }
            .navigationBarTitle(Text("Landmarks"))
        }
    }
}

struct LandmarkList_Previews: PreviewProvider {
    static var previews: some View {
        LandmarkList()
            .previewDevice(PreviewDevice(rawValue: "iPhone SE"))
    }
}

8.2  list データとしてアレイのデバイス名を持つプレビュー  LandmarkList 埋め込み  ForEach インスタンス。SwiftUIチュートリアル

ForEach で  list 回収動作と同様、我々は例えば、サブビューを使用して、任意の場所でそれを使用することができるように  stacks 、  lists 、groups などが挙げられます。本明細書で使用される画像データのエレメント列は、単純な値型である場合、我々が使用できる  \.self 識別子として  key path 。

LandmarkList.swift

import SwiftUI

struct LandmarkList: View {
    var body: some View {
        NavigationView {
            List(landmarkData) { landmark in
                NavigationButton(destination: LandmarkDetail(landmark: landmark)) {
                    LandmarkRow(landmark: landmark)
                }
            }
            .navigationBarTitle(Text("Landmarks"))
        }
    }
}

struct LandmarkList_Previews: PreviewProvider {
    static var previews: some View {
        ForEach(["iPhone SE", "iPhone XS Max"].identified(by: \.self)) { deviceName in
            LandmarkList()
                .previewDevice(PreviewDevice(rawValue: deviceName))
        }
    }
}

8.3  previewDisplayName(_:) のようにデバイス名の方法  labels プレビューに加えました。SwiftUIチュートリアル

LandmarkList.swift

import SwiftUI

struct LandmarkList: View {
    var body: some View {
        NavigationView {
            List(landmarkData) { landmark in
                NavigationButton(destination: LandmarkDetail(landmark: landmark)) {
                    LandmarkRow(landmark: landmark)
                }
            }
            .navigationBarTitle(Text("Landmarks"))
        }
    }
}

struct LandmarkList_Previews: PreviewProvider {
    static var previews: some View {
        ForEach(["iPhone SE", "iPhone XS Max"].identified(by: \.self)) { deviceName in
            LandmarkList()
                .previewDevice(PreviewDevice(rawValue: deviceName))
                .previewDisplayName(deviceName)
        }
    }
}

8.4我々は可能  canvas 異なるデバイスを体験し、彼らはコントラストレンダリングする  view ときの違いを。

おすすめ

転載: www.cnblogs.com/suibian1/p/11030916.html