如何更改 iOS 中导航控制器的工具栏颜色?

Posted

技术标签:

【中文标题】如何更改 iOS 中导航控制器的工具栏颜色?【英文标题】:How to change the toolbar color of the Navigation Controller in iOS? 【发布时间】:2011-08-24 17:30:22 【问题描述】:

我正在尝试更改导航栏的颜色。以下 rgb 为深红色,但我的导航栏在以下代码后变为白色。

navigationController.navigationBar.tintColor = [UIColor colorWithRed:117 green:4 blue:32 alpha:1];

【问题讨论】:

【参考方案1】:

这是因为CGFloat 值的范围是0.0 to 1.0 而不是0 to 255,而高于1.0 的值被解释为1.0

这里是文档:UIColor

【讨论】:

【参考方案2】:

这样做:

navigationController.navigationBar.tintColor = [UIColor colorWithRed:117/255.0f green:4/255.0f blue:32/255.0f alpha:1];

【讨论】:

我这样做了,现在它显示为黑色而不是深红色 看起来您在所有选项中只能看到白色或黑色...您确定没有黑白显示器吗? :) 确保您没有在应用程序的其他位置覆盖此色调。 我不这么认为。因为当我使用 [UIColor redColor] 或任何其他定义的颜色时,它可以正常工作 试试这样的: UIColor *color = [UIColor colorWithRed:117/255.f green:4/255.f blue:32/255.f alpha:1]; navigationController.navigationBar.tintColor = 颜色; 哈哈,那是因为它将分数转换为整数 :) 你需要像这样指定分数:117/255.0f 这样它们就保持为浮点数。【参考方案3】:

你必须将每个值除以 255。试试:

[UIColor colorWithRed:117/255.0f green:4/255.0f blue:32/255.0f alpha:1]

【讨论】:

这些值应该是浮点数而不是整数,否则结果将是整数。 @JoãoPortela:我编辑了答案,使值保持为浮点数。【参考方案4】:

我发现,如果您来自网络或 Photoshop 之类的软件,则使用十六进制颜色会更容易。您可以为此使用此宏:

//RGB color macro
#define UIColorFromRGB(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

并像这样使用它:

self.navigationBar.tintColor = UIColorFromRGB(0xd8dadf);

【讨论】:

【参考方案5】:

啊,这很有趣。真正的答案是 .tintColor 为导航控制器的导航项设置颜色(如“完成”按钮)。

【讨论】:

只有在最近的 ios 中才会这样,而不是在提出问题时。

以上是关于如何更改 iOS 中导航控制器的工具栏颜色?的主要内容,如果未能解决你的问题,请参考以下文章

在iOS 7中隐藏导航栏时,如何更改状态栏的颜色?

如何在 iOS 7 或 6 中更改导航栏颜色?

如何在 iOS7 的 UIPopoverController 中更改导航栏背景/颜色?

iOS 7隐藏导航栏时如何更改状态栏的颜色?

通过整个应用程序更改导航项的颜色?

Matplotlib pyqt 导航工具栏更改“图形选项”的背景颜色