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

Posted

技术标签:

【中文标题】UIBarButtonItem 外观代理设置字体属性在 iOS 11 中不起作用【英文标题】:UIBarButtonItem appearance proxy setting font attributes not working in iOS 11 【发布时间】:2018-04-12 19:38:38 【问题描述】:

ios 11 设置 UIBarButtonItem 字体的外观代理机制似乎无法完全正常工作。 (它在 iOS 10 中的行为与预期一样)。

我想知道这是否是一个错误,或者有其他方法可以做到这一点。

我的代码:

NSDictionary *barButtonAppearanceDict = @NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:24], NSForegroundColorAttributeName: [UIColor purpleColor];
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];

基本上,代码似乎可以工作,按钮字体的样式也很合适。但是,当用户点击按钮时,样式会在按钮被按下时恢复。

这是一个视频:

https://www.dropbox.com/s/hqgpbnlq6gw884p/UIBarButtonItem%20Interaction.mov?dl=0

要重新制作,请使用 Master-Detail 应用模板创建一个新应用。在上面添加代码sn-p:

didFinishLaunchingWithOptions

【问题讨论】:

酷!您能否提供足够的信息以便我们重现/测试? 【参考方案1】:

您忘记设置Highlighted 样式。

[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict UIControlStateHighlighted];

【讨论】:

以上是关于UIBarButtonItem 外观代理设置字体属性在 iOS 11 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 UIBarButtonItem 上调用 setTitleTextAttributes 对 iOS 11 没有任何影响

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

UIBarButtonItem 外观我需要一个例外

重置文本时覆盖外观代理

影响工具栏的 NavigationControl 的 UIBarButtonItem 外观

更改 UIBarButtonItem 文本字体大小和颜色