虽然 SwiftUI 在 Xcode Previews 里现已很方便了,可是假如有的场合只需要简略的 UI 调试,也能够在 Playground 中尝试。Playground 中也能够很好的兼容 SwiftUI View。

主要有两种办法:

UIHostingController

SwiftUI view 能够包在 UIHostingController 来让 UIKit 调用。因而能够经过 UIHostingController 来支撑预览:

import SwiftUI
import PlaygroundSupport
struct MyExperimentalView: View {
    var body: some View {
        ...
    }
}
let view = MyExperimentalView()
let hostingVC = UIHostingController(rootView: view)
PlaygroundPage.current.liveView = hostingVC

setLiveView

PlaygroundPage 新增了一个面向 SwiftUI View 的 setLiveView 办法,SwiftUI view 能够直接作为参数传进去,就能够支撑烘托:

import SwiftUI
import PlaygroundSupport
struct MyExperimentalView: View {
    var body: some View {
        ...
    }
}
let view = MyExperimentalView()
PlaygroundPage.current.setLiveView(view)

其他

假如期望 Playground 愈加积极的烘托 view,能够装备 PlaygroundPage.current.needsIndefiniteExecution = true

在 Sundell 博客文章(2021.5)里,他说到能够在 timeline 中把 view pin住,这样在代码下面会刺进一个预览视图,也能够烘托出 SwiftUI 的 view:

怎样在 Playground 中预览 SwiftUI view

可是我在当前版本的 Playground 中(Xcode 14.3),SwiftUI view 现已不会被当做视图烘托:

怎样在 Playground 中预览 SwiftUI view

总结

在 Playground 中展示的 SwiftUI view 不能调理预览参数。相比在 Xcode 中才能仍是差了不少,感觉只有在十分简略的实验性 UI 中才有使用的必要。


引用:Three ways to render a SwiftUI view in a playground