xcode - WKWebView 不显示在操场上
问题描述
当我在 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。我不确定出了什么问题。
解决方案
您需要明确指定框架(因为没有窗口)
PlaygroundPage.current.setLiveView(webView().frame(width: 400, height: 300))
推荐阅读
- sql-server - .NET v2 IIS 30 秒后超时(并非总是如此)
- pandas - 如何分组并创建字符串列表
- rest - 使用自然键休息:对 HTTP PUT 的 201 Created 响应能否包含与请求 URI 不同的 Location 标头?
- amazon-web-services - 通过电子邮件将报告自动发送到 S3 存储桶
- r - 我如何使用 YYYYMM 格式遍历 R 中的表
- javascript - 我可以在不触发详尽的 deps lint 的情况下使用包含 ref 的 React 钩子吗?
- python - 替换从某个位置开始的字符串的一部分
- wordpress - 按价格过滤,更改按钮标签
- reactjs - React:嵌套组件之间的通信
- reactjs - 为什么分页不起作用?以及如何解决?