2014-11-16 42 views
0

嗨我试图设置一个自定义样式到这个UIBarButton,但我不能得到它的工作,这是怎么做到的?如何为此UIBarButtonItemStyle创建自定义设计?

UIBarButtonItem *theatersNav = [[UIBarButtonItem alloc] initWithTitle:@"THEATERS" 
style:(UIBarButtonItemStyleDone) target:self action:@selector(theatersNavAction:)]; 

我已经得到了一个背景PIC,但我不缝能够更改文本

UIImage *userImage = [UIImage imageNamed:@"heart-normal"]; 
UIImage *userImageHighlighted = [UIImage imageNamed:@"heart-highlighted.png"]; 

[[UIBarButtonItem appearance] setBackgroundImage:userImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

[[UIBarButtonItem appearance] setBackgroundImage:userImageHighlighted forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
+0

你想要什么风格?你有什么企图? – rmaddy

+0

改变字体和颜色 – josef

+0

在不同的统计突出显示,正常 – josef

回答

1

的字体,颜色和sixe当您使用[UIBarButtonItem appearance]中,设置适用于您创建的所有新的UIBarButtonItem实例。它对任何现有的UIBarButtonItem实例都没有影响。

如果您只想将设置应用于单个按钮,请勿使用[UIBarButtonItem appearance]。将设置直接应用到您想要设置样式的按钮。

如果要将设置应用于所有按钮,请在创建任何按钮之前使用[UIBarButtonItem appearance]

假设你想要的风格只是一个按钮,你想:

UIBarButtonItem *theatersNav = [[UIBarButtonItem alloc] initWithTitle:@"THEATERS" style:(UIBarButtonItemStyleDone) target:self action:@selector(theatersNavAction:)]; 

UIImage *userImage = [UIImage imageNamed:@"heart-normal"]; 
UIImage *userImageHighlighted = [UIImage imageNamed:@"heart-highlighted.png"]; 

[theatersNav setBackgroundImage:userImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[theatersNav setBackgroundImage:userImageHighlighted forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
+0

不错,谢谢,我该如何改变所有UIBarButtonItem的字体,颜色和大小? – josef

+0

使用'setTitleTextAttributes:forState:'方法。仅供参考 - 不要忘记更新/接受有用的答案。 – rmaddy

+0

非常感谢!我可以将所有UIBarButtonItem设置为具有相同的字体,还是必须为每个按钮添加字体? – josef