在屏幕上查看后 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()
的设置不正确。
我花了一整天的时间尝试更改 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()
的设置不正确。