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)
我有一个名为 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)