有没有一种简单的方法可以在不使用图像的情况下更改UIBarButtonItem的文本颜色?

时间:2011-04-13 16:01:37

标签: iphone cocoa-touch ios4 uibarbuttonitem

是否有一种简单的方法可以在不使用UIImage作为背景的情况下更改UIBarButtonItem的文本颜色?

默认情况下,文字始终为白色。我想把它弄成黑色。

4 个答案:

答案 0 :(得分:6)

感谢IOS 5.0,您不需要使用图像。您可以使用以下代码设置各种文本属性。

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithTitle:@"Title"     style:UIBarButtonItemStyleBordered target:nil action:nil];

if ([button respondsToSelector:@selector(setTitleTextAttributes:forState:)]) {

    NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                               kTextColor,UITextAttributeTextColor,
                                               nil];

    [[UIBarButtonItem appearance] setTitleTextAttributes:textAttributes                   
                                  forState:UIControlStateNormal];

}

答案 1 :(得分:1)

我宁愿在UIBarButtonItem中使用UIButton并自定义它。

这是自定义UIButton的自定义图形示例。这个想法保持与UIBarButtonItem相同的使用initWithCustomView,以便在其中添加其他可以轻松定制的内容。

self.closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
[closeButton setImage:[UIImage imageNamed:@"webview_close_button_normal.png"] forState:UIControlStateNormal];
[closeButton setImage:[UIImage imageNamed:@"webview_close_button_pressed.png"] forState:UIControlStateHighlighted];
closeButton.frame = CGRectMake(0, 0, 121, 36);
[closeButton addTarget:self action:@selector(closeAdViewController) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem * aBarButtonAdClose = [[[UIBarButtonItem alloc] initWithCustomView:closeButton] autorelease];

答案 2 :(得分:1)

您可以使用

设置自定义视图

[[UIBarButtonItem alloc] - (id)initWithCustomView:(UIView *)customView]

答案 3 :(得分:0)

你问题的直接答案是否定的。

您不能通过设置其中一个属性来简单地更改UIBarButtonItem的颜色。您可以设置包含tintColor的{​​{1}}或UIToolBar的{​​{1}}属性,但这也会影响工具栏本身的颜色,并且不会提供太多定制

如果这对你不起作用,那么自定义视图就像其他答案所示是个好主意。

祝你好运!