以编程方式更改导航栏标题:添加符号并更改其颜色

Posted

技术标签:

【中文标题】以编程方式更改导航栏标题:添加符号并更改其颜色【英文标题】:Change navigation bar title programmatically: Add a symbol and change its color 【发布时间】:2013-03-11 20:31:37 【问题描述】:

我想在我的导航控制器UINavigationBar 的标题中添加一个字符符号(例如,一个空格字符后跟一个项目符号“•”)。根据我的应用程序的状态,我想更改项目符号的前景色。

我考虑过使用属性字符串来更改颜色。 但是,我没有找到直接访问标题并为其分配属性字符串的方法。

您会推荐什么解决方案来将字符符号添加到 UINavigationBar 并能够更改其颜色?

谢谢!

【问题讨论】:

【参考方案1】:

如果您的视图控制器包含在导航控制器中,则设置标题属性就足够了:

self.title=@"Something •";

Xcode 和 NSStrings 完全兼容 UTF-8,因此将项目符号直接放在字符串中就可以了。

如果您尝试独立操作导航栏标题,您将不得不费尽周折才能找到它。如果您知道它是根视图控制器,那么您可以执行以下操作:

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UINavigationController *navCtrl = (UINavigationController*)[keyWindow rootViewController];
UINavigationItem *topItem = [navCtrl topItem];
topItem.title = @"Something •";

【讨论】:

如何独立于主标题文本更改项目符号的颜色?谢谢! 在这种情况下不能使用 title 属性,因为它只接受 NSString,不接受 NSAttributedString。您必须使用自己的 UILabel,让导航栏的 titleView 使用它,并设置标签的属性值属性(仅限 ios6 及更高版本)

以上是关于以编程方式更改导航栏标题:添加符号并更改其颜色的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式更改导航栏标题

如何在 Swift 中更改 TabBar 的颜色?图像作为导航栏中的背景?

以编程方式快速更改导航栏的高度

更改活动导航项的颜色并显示相对于导航栏项的页面

故事板中未显示导航栏

更改导航栏文本颜色