我的应用程序有许多被推送到导航堆栈上的 ViewController。
我已经在 AppDelegate 中全局配置了 UINavigationBar 外观,如下所示。
let appearance = UINavigationBar.appearance()
appearance.barTintColor = myColor
appearance.tintColor = .white
appearance.isTranslucent = false
let textAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white,
NSAttributedString.Key.font: myFont, size: mySize)]
appearance.titleTextAttributes = textAttributes as [NSAttributedString.Key : Any]
除了只有一个 ViewController 之外,所有 ViewController 都按预期工作。
以下是按预期工作的 VC 之一。它显示了我想要的颜色和字体。
下面是显示不同外观的 ViewController。
我不明白为什么这个 VC 上只有一个导航栏显示不同的外观。
所以我已经完成了调试视图层次结构。
下面是按预期工作的 VC 的视图层次结构。
下面是显示奇怪外观的 VC 视图层次结构。
如图所示,有问题的 NavigationBar 多了两层,UIVisualEffectView 和 UIVisualEffectBackdropView。
我是一位经验丰富的 iOS 开发人员,不知道为什么会发生这种情况。
我仔细检查了IB上与NavigationBar相关的所有设置,但发现与其他设置没有区别。
我什至删除了 ViewController,完全嵌入 NavigationController 并从头开始重建它们,但没有运气。
请有人解释一下为什么只有这个 NavigationBar 有不同的结构。
我正在使用 iOS 13.3 和 Xcode 11.3.1