我正在使用UIAppearance自定义所有UIBarButtonItem,其中包含:
[[UIBarButtonItem appearance] setTintColor:[UIColor purpleColor]];
除了颜色选择不佳外,效果也很好。
现在,我想要一些具有特定风格的按钮。所以我创建了一个新类,我们称之为YellowDoneBarButtonItem
我也想自定义它,所以我添加:
[[YellowDoneBarButtonItem appearance] setTintColor:[UIColor yellowColor]];
不幸的是,对... appearance] setTintColor:
的最后一次调用获胜,所有按钮,子类或非子类采用最后指定的颜色。
我无法使用appearanceWhenContainedIn:
,因为有时候,我可能在同一个导航栏中有两种不同的按钮样式。
有没有办法比全部或全部更有选择性地使用UIAppearance
?
医生说:
在任何给定的视图层次结构中,最外层的外观代理获胜。特异性(链条的深度)是决胜局。换句话说,appearanceWhenContainedIn:中的包含语句被视为部分排序。给定一个具体的排序(实际的子视图层次结构),UIKit选择从窗口向下读取实际层次结构时第一个唯一匹配的部分排序。
任何把这个事实都归结为需要的技巧?
答案 0 :(得分:2)
实例化的实际按钮似乎是UINavigationButton,它是UIButton的(私有)子类。这可以解释为什么UIBarButtonItem外观子类是一个全能的。
就我个人而言,我一直使用UIButton作为自定义视图来获得我需要的外观。这些可以使用UIAppearance轻松覆盖。