WKWebView 的 init with frame 和 config 向下偏移,iOS swift

WKWebView's init with frame and config is offset down, iOS swift

我有一个名为 webViewContainer 的 UIView,具有适当的约束,并且此视图的背景色为红色以用于测试目的。我需要使用框架和配置初始化 WKWebView。当我这样做时,视图似乎向下偏移(顶部和底部边缘似乎都向下移动)。

方法一:

webView = WKWebView(frame: webViewContainer.frame, configuration: config)
    if let webView = webView {
        webViewContainer.addSubview(webView)
    }

方法二:

webView = WKWebView(frame: .zero, configuration: config)
    webView?.frame = webViewContainer.frame
    if let webView = webView {
        webViewContainer = webView
    }
以上的

None 和它们的组合似乎都有效。我错过了什么?

由于您似乎无论如何都在使用约束,因此您可能还想将它们添加到您的 webView 中:

webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())
if let webView = webView {
   webViewContainer.addSubview(webView)
   webView.translatesAutoresizingMaskIntoConstraints = false
   NSLayoutConstraint.activate([
      webView.leadingAnchor.constraint(equalTo: webViewContainer.leadingAnchor),
      webView.trailingAnchor.constraint(equalTo: webViewContainer.trailingAnchor),
      webView.topAnchor.constraint(equalTo: webViewContainer.topAnchor),
      webView.bottomAnchor.constraint(equalTo: webViewContainer.bottomAnchor)
   ])
}

在这里您设置了 webViewContainer 的框架,因此框架具有不同的 x 和 y 位置,这就是内部子视图设置不利的原因。

您应该需要使用边界。将 return x 和 y 设为零,这样您将获得完美的结果。

用这个替换你的代码

webView = WKWebView(frame: webViewContainer.bounds, configuration: config)