接下來,咱們會在 LandmarkList_Previews
中添加代碼以在不一樣的設備尺寸上渲染列表。默認狀況下,預覽會以當前的 scheme
中設備的大小進行渲染。咱們能夠經過調用 previewDevice(_:)
方法來改變預覽設備。SwiftUI官方教程canvas
8.1 首先,改變當前 list
的預覽來顯示 iPhone SE 的尺寸。swift
咱們能夠輸入任何 Xcode scheme
菜單中顯示的設備名稱。數組
LandmarkList.swiftide
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教程spa
ForEach
以與 list
相同的方式對集合進行操做,這樣咱們就能夠在任何能夠使用子視圖的地方使用它,好比 stacks
, lists
,groups
等。當數據元素像這裏使用的字符串同樣是簡單的值類型時,咱們能夠使用 \.self
做爲標識符的 key path
。code
LandmarkList.swiftblog
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
時的差別。it