在 iOS >= 15 上使状态栏不透明

Making status bar opaque on iOS >= 15

因此,从 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 上隐藏(不可见)导航控制器时不可能使状态栏不透明(和彩色)?

its impossible to make status bar opaque (and colorized) while navigation controller is hidden (not visible) on iOS >= 15?

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