为什么我的颜色目录中的动态颜色在导航栏上不起作用?

问题描述

我正在使用以下方法 Colors.xcassets 中的自定义颜色(具有两个颜色值,一个用于浅色,一个用于深色模式)分配给导航栏:

[self.navigationController.navigationBar setBarTintColor: ...;

由于某些原因,导航栏仅采用深色模式的颜色值,即使在应用程序启动或切换为浅色模式时也是如此。它始终使用深色的蓝色:

enter image description here

当我将此颜色设置为其他对象时,它的工作原理与应该工作的一样。由于没有找到描述此问题的线程,因此我对如何解决此问题一无所知。它发生在iOS13和iOS14中。

预先感谢

巴斯蒂安

解决方法

创建两种颜色,例如navTintnavBack并如下设置。请注意,我将它们设置为导航栏和工具栏。

    UINavigationController * nav          = ... whatever your nav controller may be ...;

    nav.navigationBar.tintColor           = [UIColor colorNamed:@"navTint"];
    nav.navigationBar.barTintColor        = [UIColor colorNamed:@"navBack"];
    nav.toolbar.tintColor                 = [UIColor colorNamed:@"navTint"];
    nav.toolbar.barTintColor              = [UIColor colorNamed:@"navBack"];