1

在 iOS 12 和之前,我曾经[[UINavigationBar appearance] setBackgroundColor...]为所有导航栏设置应用程序范围的背景颜色。

在 iOS 13 中,我想在支持暗模式的同时做同样的事情。在应用程序资产目录中,我定义了一个名为 ColorNavBarBackground并指定了 aAny appearanceDark appearancecolor。

如果禁用深色模式,则Any使用正确的颜色。但是,当启用深色模式时,指定的Dark颜色将被忽略,所有导航栏都显示为纯黑色......

但是,如果我在 IB 中手动将 NavBar 的背景颜色设置为NavBarBackground这个 NavBar 在正常模式和暗模式下都显示正确的颜色。

那么,如何[UINavigationBar appearance]与深色模式和命名颜色一起使用呢?

4

1 回答 1

1

您可以使用 iOS 13 的新外观 API: https ://developer.apple.com/documentation/uikit/uinavigationbarappearance

例子:

let style = UINavigationBarAppearance()
style.backgroundColor = .red
style.barTintColor = UIColor(named: "my_colour")!

navigationController?.navigationBar.standardAppearance = style
navigationController?.navigationBar.scrollEdgeAppearance = ...
navigationController?.navigationBar.compactAppearance = ...
于 2019-10-02T10:57:28.090 回答