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