UIButton 外观 setBackgroundColor 更新后现在影响导航栏

Posted

技术标签:

【中文标题】UIButton 外观 setBackgroundColor 更新后现在影响导航栏【英文标题】:UIButton appearance setBackgroundColor effecting navigation bar now after update 【发布时间】:2018-01-14 14:46:04 【问题描述】:

Xcode 或 ios 更新使以下代码的功能有所不同,因为现在导航栏按钮背景具有背景颜色,与以前不同。有什么修复吗?我希望所有按钮都具有相同的全局颜色,但现在它会影响我不想要的导航栏按钮。我希望它像以前一样透明。

[[UIButton appearance] setBackgroundColor:[Helper getColor:self.application.color]];

【问题讨论】:

【参考方案1】:

由于此特定 UIButton 位于 UINavigationBar 内,您可以尝试应用第二个特定外观来“覆盖”第一个常规外观集。 比如具体调用,

[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil]
       setBackgroundColor:[UIColor clearColor] forState:state barMetrics:metrics];

打电话后

[[UIButton appearance] setBackgroundColor:[Helper getColor:self.application.color]];

用具体覆盖一般。

文档链接:https://developer.apple.com/documentation/uikit/uiappearance

【讨论】:

救命稻草...尽管[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil] setBackgroundColor:nil]; 我还是走这条路

以上是关于UIButton 外观 setBackgroundColor 更新后现在影响导航栏的主要内容,如果未能解决你的问题,请参考以下文章

无法更改 UIButton 外观

让多个 UIButton 共享相同外观的最佳方法

appdelegate 中的 UIButton 外观层不起作用

受 UIButton 外观设置影响的 UIMenuController 中的文本颜色

如何赋予 UIButton UIBarButtonItem 的外观

UITableViewCell 显示指示器继承 UIButton 的外观