请看下面的截图。
我为UINavigationBar,底部的搜索栏和工具栏设置了相同UIColor对象的所有色调颜色。但由于某种原因,导航栏颜色略有不同。这可能是什么原因?
谢谢..
答案 0 :(得分:60)
导航栏和搜索栏之间的差异是因为导航栏是半透明的,系统将为导航栏应用默认的Alpha值。
尝试self.navigationController.navigationBar.translucent = NO;
答案 1 :(得分:27)
UINavigationBar
在你设置的颜色方面有一些奇怪的行为。正如其他成员指出的那样,您必须将translucent
布尔值设置为false
,但这并不是要让您的栏与您尝试设置的颜色相匹配。它会很接近,但如果仔细观察,它将不是您尝试使用的确切颜色。要在UINavigationBar
上设置 true 颜色,您需要了解它的作用。
假设我想将UINavigationBar
设置为这种冷色绿色。
这将是RGB值:R = 90 | G = 200 | B = 95
UINavigationBar
将做的是通过赋予绿色“光泽”外观来应用它的内置样式。对我们来说,结果是我们将绿色RGB值和 upping 各占20倍。
如果你仔细观察,上方的绿色方块与UINavigationBar
显示的绿色方块不完全匹配,并显示相同的RGB值。这看起来稍微亮一点。
要解决此问题,只需将您想要用于应用程序UINavigationBar
的颜色的RBG值减少20。
所以R = 90 | G = 200 | B = 95将变为R = 70 | G = 180 | B = 75
答案 2 :(得分:4)
它因默认的UINavigationBar模糊效果而不同。我建议用你的颜色设置2px宽度的可伸缩背景图像。 像这样:
UIImage *image = [UIImage imageNamed:@"yourBlueImage"];
image = [image stretchableImageWithLeftCapWidth:image.size.width / 2.0f topCapHeight:0.0f];
[yourNavBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
这就像一个技巧,因为当您设置自定义backgroundImage时,模糊效果将被禁用,您将获得准确的颜色。
答案 3 :(得分:2)
navigationBar.barStyle = UIBarStyle.blackOpaque
当以前的答案都不起作用时(在iOS 9.3中),我们努力防止与背景发生意外混合。
答案 4 :(得分:1)
我已经尝试了所有解决方案,请参见此处的答案。但是没有什么能完全解决它。我发现了:
首先,您必须选择导航栏并禁用“半透明”复选框。就在顶部。
完成此操作后。 BackgroundColor仍然是错误的。因此,请勿设置BackgroundColor,而应设置NavBar的TintColor。您可以像半透明一样执行此操作。设置TintColor的可能性是“半透明”复选框下的2个元素。
或者您使用swift或objC进行设置:
self.navigationController?.navigationBar.isTranslucent = false
navBar.barTintColor = UIColor.CustomColor.colorPrimary
答案 5 :(得分:1)
我和操作员有同样的问题。经过数小时的失败尝试后,我决定更改代码中的逻辑:
首先,设置导航栏的背景颜色:
navigationBar.barTintColor = UIColor.red
iOS将使红色稍微暗一些/更亮一些,如本线程中的其他人所述。
第二,使用导航栏的颜色并将其设置为所需的颜色,在我的情况下,将其设置为单元格的背景:
cell.backgroundColor = navigationBar.barTintColor
现在颜色将是相同的。
答案 6 :(得分:1)
您将必须禁用导航栏的属性半透明
您可以通过以下行
以编程方式进行操作self.navigationController?.navigationBar.isTranslucent = false
OR
只需取消选中情节提要中的“半透明”复选框,即可在UINavigationController的UINavigationBar属性中找到它
答案 7 :(得分:0)
尝试一下,这行得通
navigationController?.navigationBar.shadowImage = UIImage() navigationController..navigationBar.setBackgroundImage(UIImage(),用于:.default)
答案 8 :(得分:0)
在RGB中添加20以获取所需的输出。 例如。我在UIViewController RGB中的导航栏和UIView是(66,66,167)
答案 9 :(得分:0)
供其他读者使用
如果没有一种解决方案适合您,请尝试检查this one。
可能您已使用通用RGB在情节提要中设置了视图控制器的背景颜色,该颜色不同于自iOS 10 SDK以来UIColor类中使用的sRGB。
答案 10 :(得分:0)
这对我来说很有效-
let img = UIImage(color: UIColor.red)
navigationController?.navigationBar.shadowImage = img
navigationController?.navigationBar.setBackgroundImage(img, for: .default)
答案 11 :(得分:-25)
我之前遇到过同样的问题。完全关闭Xcode,为我解决了这个问题。