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