我正在定制一个UINavigationBar,如下所示:

UIImage * img = [UIImage imageNamed:@"background.png"];
[[UINavigationBar appearance] setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];

我原来的图片 background.png 看起来像这样:

original

它有一个扁平的颜色 #4b0367

生成的NavigationBar如下所示:

resulting bar

它的颜色 #311253 与原版不同!显然UIKit会改变颜色 .

注意:

  • 设置 tintColor 无效 .

  • 在我的情况下,设置透明背景图像颜色不是合适的解决方案 .

有人知道底层机制是如何运作的吗?如何才能使原始图像正确显示?