iPhone X 上的导航栏不覆盖状态栏

Posted

技术标签:

【中文标题】iPhone X 上的导航栏不覆盖状态栏【英文标题】:Navigation bar not covering status bar on iPhone X 【发布时间】:2018-06-05 18:50:11 【问题描述】:

我有一个简单的视图控制器,其视图(地图)固定在其父视图上。视图嵌入在导航控制器上,但导航栏从 iPhone X 上的安全区域(状态栏下方)开始。理想情况下,当在iPhone X。我该怎么做?

这是如何设置栏以使其半透明:

//Design Set Up
let navBar = UINavigationBar.appearance()
navBar.setBackgroundImage(UIImage(), for: .default)
navBar.backgroundColor = UIColor(displayP3Red: 0, green: 0, blue: 0, alpha: 0.5)

【问题讨论】:

只是澄清一下:你认为这是做什么的:UINavigationBar.appearance()? 跨视图访问和更改导航栏的外观 UINavigationBar 这是什么?对象在您的屏幕截图中绘制为黑色矩形? 我很确定您以某种方式设法让第二个导航栏进入您的屏幕。 不确定这是怎么发生的 【参考方案1】:

您应该将视图控制器嵌入UINavigationController,而不是只使用UINavigationBar。这样,您将自动获得带有导航控制器的导航栏,并将完全延伸到屏幕顶部。

https://developer.apple.com/documentation/uikit/uinavigationcontroller

您可以将其添加到情节提要中,或者如果您正在使用代码,例如:

let mapViewController = UINavigationController(rootViewController: MapViewController())

(假设您的地图名为MapViewController

【讨论】:

我将视图控制器嵌入到导航控制器中,并在 AppDelegate 上更改其外观

以上是关于iPhone X 上的导航栏不覆盖状态栏的主要内容,如果未能解决你的问题,请参考以下文章

iOS-导航栏、状态栏及Tabbar高度(区分iPhone X与其他iPhone机型)

iPhone X - 隐藏状态栏向上推动导航栏

隐藏导航栏时隐藏状态栏 - SWIFT iOS8

iOS - 14、15 iPhone苹果手机的状态栏高度

Apple Watch:从基于页面的导航显示模式屏幕后,状态栏不可见

iOS 14获取iPhone的状态栏高度方法