在屏幕上查看后 setTitleTextAttributes 不起作用。 iOS 11

setTitleTextAttributes not working after view on screen. iOS 11

我花了一整天的时间尝试更改 UIBarButtonItem 的颜色,现在我认为这是一个 iOS 11 错误,除非有人可以告诉我这是设计使然。

我可以使用此代码更改文本的颜色

[self.refreshButton setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor orangeColor]} forState:UIControlStateNormal];

如果我将代码添加到 viewWillAppear:animated 函数中,它可以正常工作,但是如果将它添加到 viewDidAppear:animated 中,它就不起作用。

它似乎适用于 iOS 9 模拟器,但不适用于 iOS 11。

iOS11 在这方面有什么变化吗?

如果您只想更改 UIBarButtonItem 的标题颜色,您可以设置 tintColor 属性 而不是 setTitleTextAttributes:。如果您希望所有 UIBarButtonItems 具有相同的标题颜色,您可以设置 tool/navigation 栏的 tintColor

我在 iOS11 上遇到了同样的问题,但需要通过 setTitleTextAttributes 设置字体。不幸的是,这在外观上也不起作用。我找到的唯一解决方案是创建新的 BarButtonItems 作为旧的副本,然后将它们设置为 navigationItem.rightBarButtonItems.

供遇到相同问题的其他用户参考。

Stack Overflow answer 可以解释为什么该方法不起作用。

可能是 UIControlState() 的设置不正确。