iOS导航栏像Facebook应用程序一样的色调颜色

4

我需要一个像Facebook导航栏(在iOS 7中)一样的着色。

我选择了Facebook应用程序的颜色,并进行了设置:

[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithHexString:@"#365491"]];

但是显示的颜色不对。这个颜色是正确的,我通过将其设置为纯视图的背景进行了测试。
上述代码的结果是 enter image description here 但我需要像这样的效果 enter image description here 同时,当我尝试使用相同颜色设置视图的背景时, enter image description here 如何复制类似Facebook导航栏的效果?

如果您的颜色显示不正确,则最好的方法是将图像放在navigationBar上.. :) - iPatel
尝试使用图案图像设置颜色,但没有任何反应 :( - Johnykutty
使用RGB代码:R: 66 G: 94 B: 157...可能会有帮助; - iPatel
1
制作相同的背景图片并设置导航栏。 - Bhavesh Nayi
3个回答

5
在iOS7中,你设置的UIColor并不是屏幕上显示的颜色。相反,iOS会稍微调整你的RGB值,并使用这些值作为颜色。
要计算条形图背后白色背景的颜色,您应该使用以下公式,如Bar Color Calculator所述:
从设计到UIColor:
(n - 102) / 0.6
从UIColor到设计:
(255 - n) / 2.5 + n
其中n是R、G或B的0-255值。
因此,您使用的ColorPicker或类似应用程序获取的不是应该用于R、G和B的值。而是iOS从其他RGB值计算出来的值。要获取精确的值,您应该遵循以下步骤:
获取Facebook导航栏的R、G和B值。 在上面的公式中使用这些值来计算准确值。 将这些R、G和B值用于您的导航栏。
例如,您可以尝试使用此颜色:
[UIColor colorWithRed:(135/255.0) green:(153/255.0) blue:(189/255.0) alpha:1]

我注意到这个日志,但我的RGB值是54,84,145。这篇博客的作者还说:“在第一个方程中,任何低于102的值都不起作用并会产生负结果。因此,在您的设计中只有102-255的值才能起作用。” - Johnykutty
@Johnykutty:尝试分别使用135、153和189作为R、G和B。 - Bhavin
@Vin如果我有颜色:0,57,72?它低于102怎么办? - Dejell

1
我制作了一个特殊的BarTintColorOptimizer实用工具,用于优化半透明导航栏色调颜色,使导航栏的实际颜色与iOS 7.x及更高版本中所需的颜色匹配。
请参见此答案以获取Facebook颜色设置示例。

1
它仍然可以在Xcode 8.2.1和iOS 10上运行。出色的工作,为我节省了很多时间。向Ivan致敬! - Frederik Winkelsdorf

0

经过多次尝试,找到了答案。

  if ([UINavigationBar instancesRespondToSelector:@selector(setBackgroundImage:forBarPosition:barMetrics:)]) {
      [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"NavBarBGTile.png"] forBarPosition:UIBarPositionTopAttached barMetrics:UIBarMetricsDefault];

  }
  else{
      [[UINavigationBar appearance] setTintColor:[UIColor colorWithHexString:kBlueColorHex]];
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接