我花了一整天的时间试图改变UIBarButtonItem的颜色,现在我认为这是一个iOS 11的bug,除非有人能告诉我它的设计。
我可以使用此代码
更改文本的颜色[self.refreshButton setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor orangeColor]} forState:UIControlStateNormal];
如果我将代码添加到viewWillAppear:animated
函数中,它可以正常工作,但是如果将其添加到viewDidAppear:animated
则不起作用。
它似乎适用于iOS 9模拟器,但不适用于iOS 11.
在iOS 11中,这方面有什么变化吗?
答案 0 :(得分:1)
如果您只想更改UIBarButtonItem
的标题颜色,则可以设置tintColor
属性而不是setTitleTextAttributes:
。如果您希望所有UIBarButtonItems
具有相同的标题颜色,则可以设置工具/导航栏的tintColor
。
答案 1 :(得分:0)
我在iOS11上遇到了同样的问题,但需要按setTitleTextAttributes
设置字体。不幸的是,这也不适用于外观。我找到的唯一解决方案是创建新的BarButtonItems作为旧版本的副本,然后将它们设置为navigationItem.rightBarButtonItems
。
供具有相同问题的其他用户参考。
答案 2 :(得分:0)
此Stack Overflow answer可以解释为什么该方法不起作用。
不正确设置UIControlState()
可能是问题所在。