UIBarButtonItems 选择的颜色在 iOS 7 中不会正确更改

Posted

技术标签:

【中文标题】UIBarButtonItems 选择的颜色在 iOS 7 中不会正确更改【英文标题】:UIBarButtonItems selected color won't change properly in iOS 7 【发布时间】:2013-12-11 10:06:23 【问题描述】:

所以我在 ios 7 中遇到 UIBarButtonItem 外观问题。我找不到任何文档的属性似乎设置了导航栏按钮按下时的不透明度,我不知道如何修改它。

[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];
[[UIBarButtonItem appearance] setTitleTextAttributes:@UITextAttributeTextColor: [UIColor whiteColor] forState:UIControlStateNormal];
[[UIBarButtonItem appearance] setTitleTextAttributes:@UITextAttributeTextColor: [UIColor orangeColor] forState:UIControlStateHighlighted];

对于这段代码,我得到的结果如下所示。

我不确定这里发生了什么。第一个问题是我似乎无法让箭头着色(因为没有 setTintColor:forState: 方法)。第二个问题是按下时这种可怕的不透明度/色调。谢谢!

【问题讨论】:

为此,您必须设置 uiimage 选择/取消选择。 你找到文本颜色的解决方案了吗? 【参考方案1】:

//自定义返回栏按钮将此代码粘贴到appdelegate中

UIImage *buttonBack30 = [[UIImage imageNamed:@"button_back_textured_30"]
                         resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 5)];
UIImage *buttonBack24 = [[UIImage imageNamed:@"button_back_textured_24"]
                         resizableImageWithCapInsets:UIEdgeInsetsMake(0, 12, 0, 5)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBack30
                                                  forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBack24
                                                  forState:UIControlStateNormal barMetrics:UIBarMetricsLandscapePhone];

【讨论】:

我其实只是想给文字上色,而不是设置图像!【参考方案2】:

你需要在ios7中为UIBarButtonItem实现下面两个方法

@property(nonatomic, retain) UIColor *tintColor
- (void)setBackButtonBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics

【讨论】:

我只是尝试为文本着色,而不是设置背景图像。 :)【参考方案3】:

尝试下面的解决方案,它可能会起作用

  NSDictionary *attributes = [NSDictionary        dictionaryWithObjectsAndKeys:[UIFont 
fontWithName:@"YOURFONT" size:14], NSFontAttributeName, 
[UIColor whiteColor], NSForegroundColorAttributeName, nil];
  [[UINavigationBar appearance] setTitleTextAttributes:attributes];

【讨论】:

以上是关于UIBarButtonItems 选择的颜色在 iOS 7 中不会正确更改的主要内容,如果未能解决你的问题,请参考以下文章

如何从默认的蓝色为MFMailComposeViewController生成UIBarButtonItems的颜色?

更改 UIBarButtonItem 颜色

在 iPad 上的 inputAssistantItem 中为 UIBarButtonItems 着色

在 UIToolbar 内向上移动 UIBarButtonItems

UIBarButtonItems 未显示在 UIToolbar 上

如何以编程方式获取 UIBarButtonItems 的状态?