iOS:使状态栏在非 iphoneX 上隐藏时保持其高度

Posted

技术标签:

【中文标题】iOS:使状态栏在非 iphoneX 上隐藏时保持其高度【英文标题】:iOS: Make Status Bar Keep its Height When Hidden on non-iphoneX 【发布时间】:2018-08-15 16:12:13 【问题描述】:

当我隐藏状态栏时:

UIApplication.shared.isStatusBarHidden = true

由于状态栏消失,我的其他视图向上移动。这很奇怪,因为通常当您将视图设置为隐藏时,它不会失去其高度。然而,这不会在 iPhoneX 上发生。

如何在不丢失高度的情况下隐藏状态栏?是否可以只使状态栏文本透明?

这也可以解决我的问题。

编辑:人们想知道我为什么要这样做。那么Snapchat就是这样做的。当您从故事中打开照片时,父视图的状态栏会消失,但状态栏所在的高度保持不变。

【问题讨论】:

【参考方案1】:

您的视图最终被固定到顶部布局指南/安全区域。当状态栏隐藏时它会向上移动,因此它们也会向上移动。如果那不是您想要的,请不要这样做。

(但是,请小心,因为您的应用需要在 iPhone X 等无边框设备上运行。)

例如,这里的按钮被固定在主视图的顶部,而不是安全区域。如您所见,当状态栏显示和隐藏时(显示 iPhone X 和 iPhone 5s),它不会移动:

【讨论】:

顺便说一句,UIApplication.shared.isStatusBarHidden = true 这行是个难闻的气味。这不是管理状态栏可见性的正确方法。 另外,我发现在 iPhoneX 上,隐藏状态栏不会将固定到安全区域的视图向上移动。它确实会移动所有其他手机。 @Micro 你应该覆盖属性:override var prefersStatusBarHidden: Bool return true 那我该怎么做呢?你的回答毫无意义,并没有告诉我任何我不知道的事情。 在 iPhoneX 和 5s 的屏幕截图中,超级视图按钮的顶部约束值是否相同?

以上是关于iOS:使状态栏在非 iphoneX 上隐藏时保持其高度的主要内容,如果未能解决你的问题,请参考以下文章

OctoberCMS - 如何使可折叠列表默认仅在非移动设备上处于活动状态

状态栏在关闭模式视图后保持隐藏并在几秒钟后出现

iOS 获取状态栏、导航栏、tabBar高度

在 iOS 11 上隐藏时状态栏背景消失

iOS 状态栏更改颜色

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