使用 SwiftUI 解锁后状态栏消失
Posted
技术标签:
【中文标题】使用 SwiftUI 解锁后状态栏消失【英文标题】:Status bar disappears after unlocking with SwiftUI 【发布时间】:2020-05-14 23:29:09 【问题描述】:我有一个 状态栏最初隐藏的应用程序:YES 和
NavigationView
.statusBar(hidden: true)
当应用程序启动时,该栏不可见,但其空间未被占用(因此它看起来像是顶部的额外填充)。但是当我锁定/解锁手机时,这个填充消失了,从而使整个应用程序更靠近顶部。
有什么建议吗?
【问题讨论】:
你会显示这个自定义修饰符的代码吗? MRE 将与环境信息(手机与模拟器、版本等)一起提供帮助。 【参考方案1】:问题
刚刚用下面的视图测试了它,在你锁定/解锁屏幕后它真的跳起来了。尝试截图,它也跳起来了(我在截图答案时偶然发现了这个)。
struct ContentView: View
var body: some View
NavigationView
Color.green
.navigationBarTitle("No status bar")
.statusBar(hidden: true)
解决方法
只需添加下面代码中标记的行。
struct ContentView: View
var body: some View
NavigationView
Color.green
.navigationBarTitle("No status bar")
.edgesIgnoringSafeArea(.all) // <-------
.statusBar(hidden: true)
恕我直言,没有这条线它应该可以工作,但显然不能。即使我设置了这个问题(Info.plist
):
UIViewControllerBasedStatusBarAppearance
到 YES
UIStatusBarHidden
到 YES
或者如果我直接在ContentView
(SceneDelegate
)上隐藏状态栏:
let contentView = ContentView().statusBar(hidden: true)
【讨论】:
谢谢你,不幸的是,edgesIgnoringSafeArea 现在的行为被逆转了。在程序启动时,该栏不存在,解锁手机后它再次出现。 你是对的。仍在研究它,到目前为止我发现safeAreaInsets.top
(GeometryProxy
) 包含错误的值。状态栏是隐藏的(最初在Info.plist
和NavigationView
上),但top
包含20
。每当我锁定/解锁,截屏,...top
包含0
- 正确的。这就是它跳的原因,但还没有可靠的修复/解决方法。以上是关于使用 SwiftUI 解锁后状态栏消失的主要内容,如果未能解决你的问题,请参考以下文章