如何为UIButton设置外观,而不影响UIBarButtonItems?

9
使用以下代码自定义常规UIButtons也会影响UIBarButtonItems和文本字段中的清除按钮。
[[UIButton appearance] setBackgroundImage:greenButtonImage forState:UIControlStateNormal];

我不希望定制后面的元素,只想要普通的圆角矩形按钮。我知道可以使用appearanceWhenContainedIn:为UIBarButtonItems和UITextField设置自定义外观,但我希望这些按钮保持标准。在这里,子类化不是一个选项,因为对于这么简单的任务不需要它。
有一个类似的问题,但它没有解决这个问题。为什么- [UIButton appearance] setBackgroundImage会影响UIBarItem对象的初始外观,如何纠正?

1
我通过将UITextField的背景图像明确设置为透明来解决问题。虽然不是一个好的解决方案。 - Maciej Swic
你是如何初始化你的UIBarButtonItems的?你是否将“customView”属性设置为UIButton对象?如果你能提供创建UIBarButtonItem的示例代码,我相信我可以帮助你解决问题...我在我的应用程序中使用外观代理和工具栏按钮/ UIButtons进行大量自定义,并且没有遇到这些问题。 - DiscDev
1个回答

4

我以前使用的一种解决方法是将 UINavigationBar 中包含的 UIButtons 的 "backgroundImage" 属性设置为 nil:

[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil] setBackgroundImage:nil forState:UIControlStateNormal];

这样做可以让您在不触及UINavigationBar中UIBarButtonItem内部的按钮的情况下,定制其他案例中的UIButtons。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接