现在我写这个是为了设置UIBarButtonItem的背景图片:
[[UIBarButtonItem appearance] setBackgroundImage:image forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackgroundImage:image forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackgroundImage:image forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackgroundImage:image forState:UIControlStateDisabled barMetrics:UIBarMetricsDefault];
我该如何干这个?
谢谢, 尼古拉斯
答案 0 :(得分:1)
你无法在C中以任何特别方便的方式真正枚举enum
的值;你能做的最好的事情就是将你关心的值粘贴到一个数组中并迭代它。
NSUInteger controlStates[] = {UIControlStateNormal, UIControlStateHighlighted, UIControlStateSelected, UIControlStateDisabled};
NSUInteger numControlStates = 4;
for( NSUInteger i = 0; i < numControlStates; i++ ){
[[UIBarButtonItem appearance] setBackgroundImage:image
forState:controlStates[i]
barMetrics:UIBarMetricsDefault];
}
答案 1 :(得分:1)
取自UIBarButtonItem docs:
通常,您应该为没有自定义值集的其他状态指定正常状态的值。同样,当属性依赖于条形度量标准时(在iPhone上,横向方向条的高度与标准高度不同),您应指定UIBarMetricsDefault的值。
基本上,您只需要为UIControlStateNormal设置值,除非您为其他人设置自定义值。如果您没有设置自定义值,它们将默认为您为UIControlStateNormal设置的值。
答案 2 :(得分:0)
BarButtonItems将背景图像设置为“正常”状态,除非您专门为另一个状态设置图像,因此您可以编写
[[UIBarButtonItem appearance] setBackgroundImage:image forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
如果你想要更明确,你也可以将所有状态组合在一起(它们是按位标志)
[[UIBarButtonItem appearance] setBackgroundImage:image forState:UIControlStateNormal | UIControlStateHighlighted | UIControlStateSelected | UIControlStateDisabled barMetrics:UIBarMetricsDefault];