如何按设备设置安全区大小?

How do I set the safe zone size by device?

我想通过设备设置安全区域。我的网络视图设置为 SafeArea aboveSuperView belowiPhone X系列之后,由于notch区,Y的值是44。但是对于 iPhone 6iPhone 844 太宽了。如何调整?

当前WKWebView的区域

从当前 Swift5 加载 WebView 区域

@IBOutlet var WKWebView: FullScreenWKWebView!
...
        let config = WKWebViewConfiguration()

        contentController.add(self, name: "goApp")

        config.userContentController = contentController

        WKWebView = FullScreenWKWebView(frame: WKWebView.frame, configuration: config)

        WKWebView.uiDelegate = self
        WKWebView.navigationDelegate = self
        WKWebView.scrollView.delegate = self
        view.addSubview(WKWebView)
        view.addSubview(indicator)
...
class FullScreenWKWebView: WKWebView {
    override var safeAreaInsets: UIEdgeInsets {
        return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    }
}

我想按设备设置Top SafeArea区域。

我正在尝试,但没有成功。

我已经设置了限制,但是右边和下面的屏幕被切掉了,而且顶部对于 iPhone 6 来说还是太宽了。

iPhone 6

的顶部

将约束锚定到安全区域并为其赋予所需的值。它会自动适应所有设备。

在这里你可以看到一个蓝色背景的 UIView,顶部和底部锚定到安全区域,值为 0(如果你想离安全区域更远,可以增加该值)。


视图将自动绘制,并给出与安全区域的适当距离(iPhone X 或以上为 44,iPhone 8 及以下为 0)。

我无法无条件地将WKWebView的顶部区域设置为安全区。因为安全区包括了NavigationController Bar Area。但是我不使用NavigationController。因此,无法将安全区设置为约束。

所以我通过按设备大小分隔解决了这个问题。

设置主故事板

根据设备高度调整WKWebVIew的高度和Y值

let screenHeight = UIScreen.main.bounds.size.height
if screenHeight > 667 {
            WKWebView = FullScreenWKWebView(frame: CGRect( x: 0, y: 44, width: WKWebView.frame.width, height: WKWebView.frame.height - 44 ), configuration: config)
        } else {
            WKWebView = FullScreenWKWebView(frame: CGRect( x: 0, y: 20, width: WKWebView.frame.width, height: WKWebView.frame.height - 20 ), configuration: config)
        }

iPhone 6

iPhone X 及之后