【问题标题】:Make WKWebView cover the whole screen让 WKWebView 覆盖整个屏幕
【发布时间】:2019-02-26 09:49:39
【问题描述】:

我有一个想要覆盖整个屏幕的 WKWebView。在没有物理主页按钮的较新设备上,iOS 在“主页栏”下添加了一个白色区域。我试图覆盖safeAreaInsets 女巫工作正常,使内容进入“homebar”,但我喜欢将顶部参数保持为其默认值。这是因为我在顶部有一个导航栏,可以隐藏或显示女巫。设置 UIEdgeInsets(top: 0... 会使 WKWebView 位于我的导航栏后面(显然)。

是否只覆盖leftbottomright

import Foundation
import WebKit

class FullScreenWKWebView: WKWebView {
    override var safeAreaInsets: UIEdgeInsets {
        return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    }
}

谢谢!

【问题讨论】:

    标签: ios swift constraints wkwebview safearealayoutguide


    【解决方案1】:

    所以我想通了,男孩,我错了。事实证明,约束不是问题,而是 WKWebView 如何在安全区域呈现页面。我发现我的 WKWebView 覆盖了整个屏幕,但没有在主栏/凹槽下呈现背景。深绿色是在 html 中定义的。

    我的解决方案是禁用 WKWebViews bultin 调整。

    webView.scrollView.contentInsetAdjustmentBehavior = .never
    

    我还为我的 WKWebView 创建了两个具有不同优先级的顶部约束。一个到 safeArea,一个到 superView。然后我在导航栏可见时更改代码中的优先级,以便页面不会在导航栏下呈现。

    结果: 对 superView 有限制

    对安全区域有限制

    【讨论】:

      【解决方案2】:

      你不能使用自动布局来解决这个问题,通过将 webview 固定到超级视图或安全区域,这取决于你想要什么?

      无论如何,你可能会做这样的事情:

      override var safeAreaInsets: UIEdgeInsets {
          let insets = super.safeAreaInsets
          return UIEdgeInsets(top: insets.top, left: 0, bottom: 0, right: 0)
      }
      

      【讨论】:

      • 将 WKWebView 固定到它的超级视图仍然将我限制在安全区域。设置top: insets.top 不起作用。
      【解决方案3】:

      我不建议直接覆盖任何UIViewsafeAreaInsets,因为它可能会导致您自己提到的意外行为。

      这些safeAreaInsets 是在更高的UIViewController 级别上生成的,因此应该在那里处理。

      我宁愿建议如下:

      将此代码添加到将保存您的FullScreenWKWebViewUIViewController

       override func viewWillLayoutSubviews() {
           super.viewWillLayoutSubviews()
      
           additionalSafeAreaInsets.bottom -= bottomLayoutGuide.length
       }
      

      这样您将保留原始UIViewControllersafeAreaInsets 并简单地为原始添加所需的修饰符。允许在任何阶段进行修改。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-14
        • 2021-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多