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
ときの違いを。