我有一个WKWebView,我想覆盖整个屏幕。在没有物理主页按钮的较新设备上,iOS在“主页”下方添加了一个白色区域。我试图覆盖safeAreaInsets
巫婆,使其内容可以放在“ homebar”下,但id希望将top参数保持为其默认值。这是因为我在顶部有一个导航栏,可以隐藏或显示女巫。设置UIEdgeInsets(top: 0...
使WKWebView移到我的导航栏后面(很明显)。
无论如何,是否仅覆盖left
,bottom
和right
?
import Foundation
import WebKit
class FullScreenWKWebView: WKWebView {
override var safeAreaInsets: UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}
}
谢谢!
答案 0 :(得分:1)
您能否通过自动布局来解决此问题,具体取决于您想要的是将Web视图固定到超级视图还是安全区域?
无论如何,您可能可以执行以下操作:
override var safeAreaInsets: UIEdgeInsets {
let insets = super.safeAreaInsets
return UIEdgeInsets(top: insets.top, left: 0, bottom: 0, right: 0)
}
答案 1 :(得分:0)
我不建议直接覆盖任何safeAreaInsets
的{{1}},因为它可能导致您所提到的意外行为。
这些
UIView
是在更高的safeAreaInsets
级别上生成的,因此应在此处处理。
我建议这样做如下:
将此代码添加到将保存您的UIViewController
的{{1}}。
UIViewController
这样,您将保留原始FullScreenWKWebView
的{{1}}并只需为原始文件添加所需的修饰符。允许在任何阶段进行修改。
答案 2 :(得分:0)
所以我弄清楚了,男孩,我错了。事实证明,约束并不是问题,而是WKWebView如何在安全区域中呈现页面。我发现我的WKWebView覆盖了整个屏幕,但没有在主页栏/凹口下渲染背景。深绿色是在html中定义的。
我对该问题的解决方案是禁用WKWebViews公告调整。
webView.scrollView.contentInsetAdjustmentBehavior = .never
我还为WKWebView创建了两个优先级不同的优先级约束。一个到safeArea,一个到superView。然后,当导航栏可见时,我会更改代码的优先级,以使页面不会在导航栏下方呈现。