WKWebView不显示在操场上

时间:2020-07-21 05:13:34

标签: xcode macos swiftui

当我在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上无效。我不知道怎么了。

1 个答案:

答案 0 :(得分:2)

您需要明确指定框架(因为没有窗口)

PlaygroundPage.current.setLiveView(webView().frame(width: 400, height: 300))