UIBarButton 背景图片显示问题

Posted

技术标签:

【中文标题】UIBarButton 背景图片显示问题【英文标题】:UIBarButton Background Image Display Issue 【发布时间】:2013-04-10 08:36:38 【问题描述】:

我在 UIViewController 中添加了一个 UIToolBar 并在其中添加了 UIBarButton,还添加了用于在后台显示图像但图像不显示的代码

这是我的代码

UIBarButtonItem *b1=[[UIBarButtonItem alloc]initWithTitle:@"   Home   " style:UIBarButtonItemStyleBordered target:self action:@selector(home: )];
[b1 setImage:[UIImage imageNamed:@"b1image.png"]];

UIBarButtonItem *b3=[[    UIBarButtonItem alloc]initWithTitle:@"   WorkOuts   " style:UIBarButtonItemStyleBordered target:self action:nil];
[b1 setImage:[UIImage imageNamed:@"b3image.png"]];

UIBarButtonItem *b4=[[UIBarButtonItem alloc]initWithTitle:@"   All Exercises  " style:UIBarButtonItemStyleBordered target:self action:@selector(all:)];
[b1 setImage:[UIImage imageNamed:@"b4image.png"]];

NSArray *li=[[NSArray alloc]initWithObjects:b1,b3,b4, nil];

self.toolBar.items=li;

【问题讨论】:

你应该用initWithImage:style:target:action:创建你的UIBarButtonItem 我尝试了这个,但是白色图像插入了真实图像 请问是否可以在 UIBarButtonItem 中设置 bacgrpnd 图片,请帮助 Desdenova 【参考方案1】:

查看documentation 的UIBarButtonItem

您可以使用 UIButton 来显示图像:

UIImage *image = [UIImage imageNamed:@"b1image"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setFrame:CGRectMake(0.f, 0.f, image.size.width, image.size.height)];
[button setImage:image forState:UIControlStateNormal];
[button addTarget:self action:@selector(home:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *b1 = [[UIBarButtonItem alloc] initWithCustomView:button];

这应该可以解决您的问题并正确设置图像。 setImage: 继承自另一个类,不会影响 UIBarButtonItem

【讨论】:

请再说一件事我放了多大的图片 请尝试图像不进入背景 通常UIToolbar 的高度为 44 像素,因此我建议高度为 30 像素,大小取决于您想要显示的内容。您甚至可以完全更改工具栏的大小以满足您的需要。 @见***.com/questions/2135407/… setBackButtonBackgroundImage:forState:barMetrics: 不适用于 UIBarButtonItem 它会,但UIBarButtonItem 的正确方法是initWithImage:style:target:action:

以上是关于UIBarButton 背景图片显示问题的主要内容,如果未能解决你的问题,请参考以下文章

UIBarButton 未在 UINavigationBar 中显示

UIBarButton 不会显示在我的 UINavigationController

在 StoryBoard 中为 UIBarButton 显示图像而不是文本

iOS 在整个导航控制器中显示相同的 UIBarButton

带有 CustomView 和边框的 UIBarButton

检测从其他 ViewController 中点击了哪个 UIBarButton