UIBarButtonItem 外观 setTitleTextAttributes 不影响 UIControlStateDisabled 状态

Posted

技术标签:

【中文标题】UIBarButtonItem 外观 setTitleTextAttributes 不影响 UIControlStateDisabled 状态【英文标题】:UIBarButtonItem appearance setTitleTextAttributes does not affects UIControlStateDisabled state 【发布时间】:2012-07-27 22:17:27 【问题描述】:

我们的设计师要求我为禁用的 UIBarButtonItems 的文本使用特定颜色。我用来实现这个的代码:

NSDictionary* textAttributes = [NSDictionary dictionaryWithObject: [UIColor blueColor]
                                                           forKey: UITextAttributeTextColor];

[[UIBarButtonItem appearance] setTitleTextAttributes: textAttributes
                                            forState: UIControlStateDisabled];

但它不会改变文本属性。

我已经尝试使用正常状态的代码,尝试使用 setBackgroundImage 更改 UIControlStateDisabled 按钮的背景,并且所有 thouse 实验都运行良好。但是这个单一的组合:setTitleTextAttributes 和 UIControlStateDisabled 没有任何作用。

Google 没有就该特定组合给我任何相关答案。

有没有人知道改变禁用 UIBarButtonItem 的颜色的其他方法或使 setTitleTextAttributes 对禁用项目起作用的方法?

【问题讨论】:

对于 6.0 及更高版本,使用 NSForegroundColorAttributeName 而不是 UITextAttributeTextColor 【参考方案1】:

您必须为控制状态 Normal 和 Disabled 设置它。

(2015-11-18 -- 从 ios 9.1 开始,您仍然必须同时设置两者。)

【讨论】:

太棒了。怎么会有人知道!【参考方案2】:

iOS 5.1 对我来说运行良好。可能是 5.0 的错误。

【讨论】:

以上是关于UIBarButtonItem 外观 setTitleTextAttributes 不影响 UIControlStateDisabled 状态的主要内容,如果未能解决你的问题,请参考以下文章

设备上的导航 UIBarButtonItem 外观不同

通过外观为 UIBarButtonItem 设置背景图像不适用于其他 UIControlStates

如何赋予 UIButton UIBarButtonItem 的外观

使用多个导航栏视图自定义 UIBarButtonItem 外观

UIBarButtonItem 外观 setTitleTextAttributes 不影响 UIControlStateDisabled 状态

UIBarButtonItem 外观代理设置字体属性在 iOS 11 中不起作用