【问题标题】:How do you set the status bar or safe area to remove white space on iPhone X?如何设置状态栏或安全区域以删除 iPhone X 上的空白?
【发布时间】:2017-11-06 19:45:44
【问题描述】:

我添加了使用安全区域指南的选项,但是当我查看应用程序时,它似乎尊重安全区域,但有一些我无法摆脱的空白。我不知道是什么原因造成的,也不知道如何从白色改变颜色。

我已将背景颜色设置为您在下面看到的颜色。

view.backgroundColor = UIColor(red:0.227, green:0.251, blue:0.294, alpha:1)

我也设置了白色状态栏样式

UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent

我的主要故事板

【问题讨论】:

  • 没有更多细节很难知道,但我猜白色区域是UIView,用于在以前的 iOS 设备上为状态栏后面的区域着色。是否有视图被添加到情节提要或代码中的该位置?
  • @nathan 我认为你可能是对的。它是视图的一部分,但不确定该空间是如何添加的。我会发布更多我的主要故事板的图片。
  • 你的网页视图有什么限制?
  • @nathan 原来是 WebView.top 约束。它被设置为基于超级视图的位置。我将其更改为安全指南,然后将其定位为 -24 约束。我将其更改为 0。不知道为什么它是 24,我希望它现在可以在所有手机类型上正常工作!

标签: ios swift ios11 iphone-x safearealayoutguide


【解决方案1】:

当视图在屏幕上可见时,本指南会反映 未被导航栏、标签栏、工具栏覆盖的视图, 和其他祖先的观点。 (在 tvOS 中,安全区域反映了该区域 没有覆盖屏幕的边框。)如果视图当前没有 安装在视图层次结构中,或者在屏幕上尚不可见, 布局指南边缘等于视图的边缘。

您需要使用 safeArea 设置约束 使用safeArea 设置webView 的顶部、底部、前导、尾随约束 常量为 0,因此您的对象不会被剪裁。

以编程方式:

 webView.translatesAutoresizingMaskIntoConstraints = false
        if #available(iOS 11.0, *) {
            let guide = self.view.safeAreaLayoutGuide
            webView.trailingAnchor.constraint(equalTo: guide.trailingAnchor).isActive = true
            webView.leadingAnchor.constraint(equalTo: guide.leadingAnchor).isActive = true
            webView.bottomAnchor.constraint(equalTo: guide.bottomAnchor).isActive = true
            webView.topAnchor.constraint(equalTo: guide.topAnchor).isActive = true
        }

SafeAreaGuide

【讨论】:

  • 我相信这会解决问题。我想我还必须确保顶部的安全区域约束也设置为 0。即使我的 webview 约束都设置为 0,我也必须将顶部对齐约束的 wC wR 字段设置为 0。
  • 是的!与constant =0 或更高版本对齐到安全区域
【解决方案2】:
if #available(iOS 11.0, *) {
     webView.scrollView.contentInsetAdjustmentBehavior = .never;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 2018-08-23
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 2019-01-20
    相关资源
    最近更新 更多