0

因此,从 iOS 15 开始,它更新了导航栏的外观。如果它后面没有内容(例如,我们没有向上滚动),它将是透明的。现在这也会影响状态栏。

当我隐藏导航栏时,状态栏保持透明。如果我这样做(应用程序委托):

 if #available(iOS 15.0, *) { 
        let navigationBarAppearance = UINavigationBarAppearance() 
        navigationBarAppearance.configureWithOpaqueBackground() 
        navigationBarAppearance.backgroundColor = .systemPurple
        UINavigationBar.appearance().standardAppearance = navigationBarAppearance 
        UINavigationBar.appearance().compactAppearance = navigationBarAppearance 
        UINavigationBar.appearance().scrollEdgeAppearance = navigationBarAppearance 
    }

这仅在我的导航栏未隐藏时才有效。否则,如果我在视图控制器中执行以下操作:

navigationController.isNavigationBarHidden = true

我的状态栏保持透明。

这不是什么大不了的。我将只使用安全区域,并设置视图控制器视图的背景颜色,它看起来就像状态栏实际上有颜色一样。但它仍然是透明的。即使我做了 navigationBarAppearance.configureWithOpaqueBackground()

我是否遗漏了什么,当导航控制器隐藏(不可见)时,它不可能使状态栏不透明(和彩色)iOS >= 15

4

1 回答 1

2

当导航控制器在 iOS >= 15 上隐藏(不可见)时,它不可能使状态栏不透明(和彩色)?

这与 iOS 15 无关。iOS 15 中没有什么新内容会影响状态栏。状态栏已经透明 6 或 7 年了。(我没有时间弄清楚这种变化是什么时候发生的;关键是,这是古老的历史。)没有不透明和/或彩色状态栏这样的东西,而且一直没有。导航栏透明度/不透明度不会以任何方式影响状态栏透明度。如果状态栏后面显示导航栏,没问题;你似乎喜欢那样。如果您不喜欢导航栏隐藏或透明时状态栏后面的颜色,请更改状态栏后面可见的颜色。

于 2022-03-02T21:18:53.560 回答