UIButton 的 uiappearance 也会更改 UIBarButton 图像吗?

Posted

技术标签:

【中文标题】UIButton 的 uiappearance 也会更改 UIBarButton 图像吗?【英文标题】:uiappearance for UIButton also changes UIBarButton image? 【发布时间】:2012-09-04 11:55:37 【问题描述】:

我正在使用这段代码

[[UIButton appearance] setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal];

更改UIButtons 的外观。这很好用,不会影响UIBarButtonItems,除了其中一个(唯一一个不是自动生成的“后退”按钮)并且仅在最初。当您触摸 barbutton 时,它会恢复为没有背景图像。

有问题的按钮是UIBarButton 而不是UIButton(除非两者都是,在这种情况下,其他UIBarButtons 也应该受到影响)。

一个线索可以是其他不受影响的UIBarButton都是在storyboard中生成的,不是我创建的。

这一定是api的bug吧?

【问题讨论】:

你能贴出生成UIBarButtonItems的代码吗? 唉,因为我试图传达它们是在故事板中定义的,所以它们也可能是由一些巫术魔法产生的。我解决它的方法是使用 setTintColor。唯一需要的代码应该是应用程序委托中的一行代码和带有一些导航示例的故事板。这真的很旧,但谢谢:) 【参考方案1】:

使用setTintColor 解决。是一个从那时起可能已经修复的 api 错误

【讨论】:

以上是关于UIButton 的 uiappearance 也会更改 UIBarButton 图像吗?的主要内容,如果未能解决你的问题,请参考以下文章

UIAppearance 代理规则何时应用于新的视图控制器?

如何使用 UIAppearance 设置 ViewController 的 backgroundColor

UINavigationBar ios8 的 UIAppearance

检查 UIAppearance 的可用性

UIAppearance 的“当不包含在”中

UIPageControl + UIAppearance