SwiftUI 中的 WKWebView ViewportSizing 日志

Joh*_*bia 5 xcode swift swiftui

在使用SwiftUI时,WKWebView在UIViewRepresentable包装器中实现时会成功加载。但是, Xcode 版本 13.4.1的调试区域中出现以下日志:

[ViewportSizing] maximumViewportInset cannot be larger than frame
[ViewportSizing] minimumViewportInset cannot be larger than frame
Run Code Online (Sandbox Code Playgroud)

这些日志如何解决?

可以使用以下最小可重现示例来重现这些日志:

WebApp.swift

import SwiftUI
import WebKit

@main
struct WebApp: App {
    var body: some Scene {
        WindowGroup {
            WebView()
        }
    }
}

struct WebView: UIViewRepresentable {
    func makeUIView(context: Context) -> some UIView {
        let webView = WKWebView()
        webView.load(URLRequest(url: URL(string: "https://www.google.com")!))
        
        return webView
    }
    
    func updateUIView(_ uiView: UIViewType, context: Context) {}
}
Run Code Online (Sandbox Code Playgroud)

进步:

这些日志似乎源自以下WebKit浏览器引擎源代码:

尽管注释掉了该webView.load(URLRequest(url: URL(string: "https://www.google.com")!))行,这些日志仍然存在。所以,可以断定这不是网站问题。

Joh*_*bia 8

可以通过更改以下设置将帧设置为大于零来解决此问题:

let webView = WKWebView()
Run Code Online (Sandbox Code Playgroud)

对此:

let webView = WKWebView(frame: CGRect(x: 0.0, y: 0.0, width: 0.1, height: 0.1))
Run Code Online (Sandbox Code Playgroud)