重现问题的先决条件:
在真实设备中,状态栏将保持为白色,位于绿色导航栏上方。
我尝试过的解决方案:
有什么想法吗?谢谢你的帮助。
这里不需要黑客或搞笑。关键是定义所需的外观,并在导航栏的标准外观
及其滚动外观
上设置该值。我的整个应用程序的基本导航控制器子类的init中包含以下内容:
if #available(iOS 13.0, *) {
let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.configureWithOpaqueBackground()
navBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.white]
navBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
navBarAppearance.backgroundColor = <insert your color here>
navigationBar.standardAppearance = navBarAppearance
navigationBar.scrollEdgeAppearance = navBarAppearance
}
在iOS 13上,使用大标题的导航栏按照苹果的人机界面指南具有透明的颜色。请参见此处的更多信息:
在iOS 13及更高版本中,默认情况下,大型标题导航栏不包含背景材质或阴影。此外,当人们开始滚动内容时,大标题会转换为标准标题
如果问题是您想在显示大标题时给导航栏一个颜色,请使用新的UINavigationBar外观类。
let app = UINavigationBarAppearance()
app.backgroundColor = .blue
self.navigationController?.navigationBar.scrollEdgeAppearance = app