代码之家  ›  专栏  ›  技术社区  ›  Whirlwind

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

  •  0
  • Whirlwind  · 技术社区  · 4 年前

    因此,从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 ?

    1 回复  |  直到 4 年前
        1
  •  2
  •   matt    4 年前

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

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