我怎样才能有图像和文字的UIBarButtonItem?

问题描述:

当我尝试使用UIBarButtonItem的图像时,文本不显示。有没有办法显示文字和图像?我怎样才能有图像和文字的UIBarButtonItem?

您可以使用具有图像和文本的自定义视图来初始化UIBarButtonItem。这里有一个使用UIButton的示例。

UIImage *chatImage = [UIImage imageNamed:@"08-chat.png"]; 

UIButton *chatButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[chatButton setBackgroundImage:chatImage forState:UIControlStateNormal]; 
[chatButton setTitle:@"Chat" forState:UIControlStateNormal]; 
chatButton.frame = (CGRect) { 
    .size.width = 100, 
    .size.height = 30, 
}; 

UIBarButtonItem *barButton= [[[UIBarButtonItem alloc] initWithCustomView:chatButton] autorelease]; 
self.toolbar.items = [NSArray arrayWithObject:barButton]; 
+0

对于最后一行,我收到一条错误消息,提示“请求成员'工具栏'不是结构或联合体,如何使用self.navigationItem .rightBarButtonItem? – 2010-10-11 03:30:21

+1

在这种情况下,用'self.navigationItem.rightBarButtonItem = barButton;'替换最后一行或者您可以使用此方法:http://developer.apple.com/library/ios/documentation/uikit/reference /UINavigationItem_Class/Reference/UINavigationItem.html#//apple_ref/doc/uid/TP40006933-CH3-SW17。 – 2010-10-11 03:39:55

+0

我试过了,没有任何显示。 – 2010-10-11 03:41:26

克里斯·马克尔的回答是一个良好的开端(仅< iOS7),但是如果你使用色调的颜色,它wount的图像和按钮的高亮显示工作状态。

我创建了一个类,它将创建一个UIBarButtonItem(leftBarButtonItem),它的外观和行为与普通的iOS7后退按钮相似。看一看:https://github.com/Zero3nna/UIBarButtonItem-DefaultBackButton

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal]; 
[button addTarget:target action:@selector(buttonAction:)forControlEvents:UIControlEventTouchUpInside]; 
[button setFrame:CGRectMake(0, 0, 53, 31)]; 
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(3, 5, 50, 20)]; 
[label setFont:[UIFont fontWithName:@"Arial-BoldMT" size:13]]; 
[label setText:title]; 
label.textAlignment = UITextAlignmentCenter; 
[label setTextColor:[UIColor whiteColor]]; 
[label setBackgroundColor:[UIColor clearColor]]; 
[button addSubview:label]; 
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button]; 
self.navigationItem.leftBarButtonItem = barButton; 

我提出一个方法如何使用故事板来做到这一点:

  1. 拖放到工具栏通常的UIView。它会自动包装到条形按钮项目。调整“尺寸检查器”中的视图宽度。更改视图的背景颜色以清除颜色。

enter image description here

  1. 穿戴的UIButton和的UILabel视图内。您可以使用约束来调整其位置。你也可以把它放在视图外面,例如,稍微高一点或低一点(就像我的照片一样)。为UIButton放置默认和突出显示的图像。

  2. 复制栏按钮项目并调整另一个按钮。添加灵活的空间。

  3. 创建网点。

  4. 完成:)。当你运行应用程序,你会得到工具栏是这样的:

  5. enter image description here

    附: Here您可以阅读如何使用.xib创建UIToolbar子类

开始=>
+0

这个答案是正确的答案。真的很干净! – Corona 2017-09-01 15:25:08