【问题标题】:How do I set the safe zone size by device?如何按设备设置安全区大小?
【发布时间】:2020-03-07 00:13:37
【问题描述】:

我想通过设备设置安全区。我的网页视图设置为SafeArea aboveSuperView below。在iPhone X 系列之后,Y 的值是44,因为notch 区域。但是对于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 顶部

【问题讨论】:

  • 为什么要设置在安全区上方?从安全区域给予约束!
  • @Lion 我将它设置为 iPhone X 的 SafeArea。 44. my y 的值不超过安全区。但对于 iPhone 6 等机型来说,差距太大了,因为它是固定价格。
  • @Lion 对不起,我是 Swift 和 xcode 的初学者,我不知道该怎么做

标签: ios swift view wkwebview safearealayoutguide


【解决方案1】:

我不能无条件地将WKWebView 的顶部区域设置为安全区。因为安全区包括NavigationController酒吧区。但我不使用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 及之后

【讨论】:

  • @Lion 我是这样解决问题的:这是正确的方法吗?
【解决方案2】:

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

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


将自动绘制视图,并提供与安全区域的适当距离(iPhone X 或更高版本为 44,iPhone 8 及更低版本为 0)。

【讨论】:

  • 对不起,我是 Swift 和 xcode 的初学者,不知道该怎么办。
  • @iosbegindevel 编辑了答案以提供更多详细信息。
  • 你看到我修改后的问题了吗?我认为您没有看到我修改后的问题。
  • 从顶部约束中移除 -44 值。
  • 顶部显示正确,但右屏和下屏被截断。
猜你喜欢
  • 2021-02-02
  • 2013-08-06
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多