iOS WKWebView 状态栏填充

标签 ios iphone swift webkit wkwebview

我一直在无休止地寻找有效的答案。我正在尝试创建一个非常简单的 WKWebView 应用程序来包装网络应用程序。我不需要任何花哨的东西,因为导航控件都在应用程序中。

目前我的 ViewController.swift 文件如下所示:

https://gist.github.com/andrewweaver/4a0e13245f185e8f31ba812b91f7dddd

快速版本: Apple Swift 版本 3.1 (swiftlang-802.0.53 clang-802.0.42)

问题是状态栏的填充,我想调整它,使状态栏不在内容之上,因为它在这里:

enter image description here

任何帮助将不胜感激,因为我是 iOS 开发的新手。我还希望能够更改状态栏颜色,但目前这不是一个紧迫的问题。

最佳答案

要完全在 HTML/CSS 中完成此操作(这将涉及您对 HTML 的控制),您需要将 viewport-fit=cover 添加到元 viewport标签。这告诉设备您希望 webview 填满整个屏幕,包括“安全区域”(例如状态栏后面)。

但您还需要动态调整内边距以适应 iPhone X,它具有更大的状态栏区域并包含用于扬声器和摄像头的凹口。

幸运的是,Apple 为安全区域插入公开了一些 CSS 常量,因此您可以在 CSS 中利用这些常量: 即,padding-top: constant(safe-area-inset-top);

我写了更多关于这个场景和 iOS 11 和 iPhone X 的新 CSS 功能:https://ayogo.com/blog/ios11-viewport/


如果您不能控制正在加载的 HTML/CSS,那么您可以为您的 WebView 禁用安全区域行为:

if #available(iOS 11.0, *) {
    webView.scrollView.contentInsetAdjustmentBehavior = .never;
}

请注意,在 iPhone X 上,这可能会导致内容无法访问并被缺口遮挡。

关于iOS WKWebView 状态栏填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45421548/

相关文章:

ios - 在 Xcode 中,哪个具有 'final' View ? : Alignment rectangle, 或 View 的框架

iphone - mobile safari 如何处理 pdf 以便提供搜索功能?

ios - NSBundle.mainBundle().pathForResource 返回 nil

iphone - "Embedded profile header length is greater than data length."错误是什么意思?

ios - 用户更改角色后如何重新加载选项卡栏项目

ios - UITableView 单元格的编辑模式转换

iphone - 设置UIActivityIndi​​catorView的框架

swift - 使 navigationBar 边框不可见

ios - TableView 没有附加新数据

ios - 从 StatusMenu 显示 NSWindowController