UINavigationBar背景颜色不是我设置的确切的UIColor

请看下面的截图。

我为UINavigationBar,search栏和底部的工具栏设置了相同UIColor对象的所有浅色。 但由于某种原因导航栏颜色稍有不同。 这可能是什么原因?

谢谢..

截图

您的导航栏和search栏之间的区别是因为导航栏是半透明的,系统将为导航栏应用默认的alpha值。

尝试self.navigationController.navigationBar.translucent = NO;

UINavigationBar有一些奇怪的行为,当涉及到你设置的颜色。 正如其他成员指出,你必须将translucent布尔值设置为false ,但这并不是让你的酒吧匹配你想要设置的颜色。 这将是密切的,但如果你仔细看它不会是你想要使用的确切颜色。 为了在UINavigationBar上设置真实的颜色,你需要明白它在做什么。

假设我想将我的UINavigationBar设置为这个很酷的绿色。

在这里输入图像说明

这将是一个RGB值:R = 90 | G = 200 | B = 95。

UINavigationBar会做的是通过给这个绿色“光泽”外观应用它的内置样式。 对我们来说,结果就是我们的绿色RGB值,每个值都是20。

在这里输入图像说明

如果看上去很近,上面的绿色方块与UINavigationBar显示的RGB值不一样。 这看起来稍微亮一些。

要解决这个问题,只需简单地将RBG值减less20就可以在应用程序中使用UINavigationBar

所以R = 90 | G = 200 | B = 95将变成R = 70 | G = 180 | B = 75。

在这里输入图像说明

它因为默认的UINavigationBar模糊效果而不同。 我可以build议使用你的颜色设置2px宽度可拉伸背景图像。 像这样的东西:

  UIImage *image = [UIImage imageNamed:@"yourBlueImage"]; image = [image stretchableImageWithLeftCapWidth:image.size.width / 2.0f topCapHeight:0.0f]; [yourNavBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; 

这就像一个技巧,因为当你设置自定义backgroundImage模糊效果将被禁用,你会得到确切的颜色。

 navigationBar.barStyle = UIBarStyle.blackOpaque 

当以前的答案都没有工作时(在iOS 9.3中),防止不必要的背景混合。

我以前也有过这个问题。 完全closuresXcode,解决了我的问题。