【问题标题】:Status bar disappears after unlocking with SwiftUI使用 SwiftUI 解锁后状态栏消失
【发布时间】:2020-05-14 23:29:09
【问题描述】:

我有一个 状态栏最初隐藏的应用程序:YES

NavigationView {
}
.statusBar(hidden: true)

当应用程序启动时,该栏不可见,但其空间未被占用(因此它看起来像是顶部的额外填充)。但是当我锁定/解锁手机时,这个填充消失了,从而使整个应用程序更靠近顶部。

有什么建议吗?

【问题讨论】:

  • 你会显示这个自定义修饰符的代码吗?
  • MRE 将与环境信息(手机与模拟器、版本等)一起提供帮助。

标签: ios swiftui


【解决方案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):

  • UIViewControllerBasedStatusBarAppearanceYES
  • UIStatusBarHiddenYES

或者如果我直接在ContentViewSceneDelegate)上隐藏状态栏:

  • let contentView = ContentView().statusBar(hidden: true)

【讨论】:

  • 谢谢你,不幸的是,edgesIgnoringSafeArea 现在的行为被逆转了。在程序启动时,该栏不存在,解锁手机后它再次出现。
  • 你是对的。仍在研究它,到目前为止我发现safeAreaInsets.top (GeometryProxy) 包含错误的值。状态栏是隐藏的(最初在Info.plistNavigationView 上),但top 包含20。每当我锁定/解锁,截屏,...top 包含0 - 正确的。这就是它跳的原因,但还没有可靠的修复/解决方法。
猜你喜欢
  • 1970-01-01
  • 2023-01-28
  • 2011-11-02
  • 2013-07-19
  • 2015-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多