当我在Xcode 11.5 Playground上运行以下代码时,将显示“文本”视图,而不显示自定义视图WebView。我也没有任何错误。
import SwiftUI
import PlaygroundSupport
import WebKit
struct webView: View {
var body: some View {
VStack {
Text("Test")
WebView(request: URLRequest(url: URL(string: "http://www.google.com")!))
}
}
}
PlaygroundPage.current.setLiveView(webView())
struct WebView : NSViewRepresentable {
var request: URLRequest
func makeNSView(context: Context) -> WKWebView {
let preferences = WKPreferences()
preferences.javaScriptEnabled = true
let config = WKWebViewConfiguration()
config.preferences = preferences
let webView = WKWebView(frame: .zero, configuration: config)
webView.frame = NSRect(x: 0, y: 0, width: 400, height: 300)
DispatchQueue.main.async {
webView.load(self.request)
}
return webView
}
func updateNSView(_ nsView: WKWebView, context: Context) {
}
}
相同的代码在主代码中有效,但在Playground上无效。我不知道怎么了。
答案 0 :(得分:2)
您需要明确指定框架(因为没有窗口)
PlaygroundPage.current.setLiveView(webView().frame(width: 400, height: 300))