提问者:小点点

在iOS13中,状态栏背景颜色与大文本模式下的导航栏不同


重现问题的先决条件:

  1. Xcode 11 beta iOS 13(最新版本至2019年6月12日)
  2. 导航栏处于大文本模式
  3. 指定导航栏的颜色

在真实设备中,状态栏将保持为白色,位于绿色导航栏上方。

我尝试过的解决方案:

  1. 将其恢复到iOS12会解决它,但我们最终会遇到iOS13...
  2. 禁用大文本模式将解决它...
  3. 隐藏状态栏将修复它,但它会导致状态栏与导航栏项重叠。

有什么想法吗?谢谢你的帮助。


共3个答案

匿名用户

这里不需要黑客或搞笑。关键是定义所需的外观,并在导航栏的标准外观及其滚动外观上设置该值。我的整个应用程序的基本导航控制器子类的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