带有图像的 UIBarButtonItem 不显示

Posted

技术标签:

【中文标题】带有图像的 UIBarButtonItem 不显示【英文标题】:UIBarButtonItem with image doesn't show 【发布时间】:2015-04-22 10:23:43 【问题描述】:

我正在尝试用image 设置UIBarButtonItem。问题是它永远不会出现。当我只添加 UIBarButtonItemtitle 时,它可以工作。

UIBarButtonItem *openLeftSliderButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"filter.png"] style:UIBarButtonItemStylePlain target:self action:@selector(openLeftSlider)];
    self.navigationItem.leftBarButtonItem = openLeftSliderButton;

【问题讨论】:

您能否确认图片名称以及它是否存在于捆绑包中? 噢,我现在觉得自己好蠢。这个图标确实有另一个名字。添加图标的设计师将其重命名。 Appcode 向我建议了文件的名称,它刚刚编译。非常感谢。 @AadilKeshwani 将其作为答案,以便检查它是否正确。 我怎样才能回答这个问题? @dasdom 谢谢 没关系,我很高兴听到它有帮助。 【参考方案1】:
 UIImage *sideImage = [UIImage imageNamed:@"i1.jpg"];    
 UIButton *btnSideMenu = [UIButton buttonWithType:UIButtonTypeCustom];     
 [btnSideMenu setImage:sideImage forState:UIControlStateNormal]; 
 [btnSideMenu setImage:sideImage forState:UIControlStateHighlighted];  
 [btnSideMenu setFrame:CGRectMake(0, 0, 20, 20)]; 
 [btnSideMenu addTarget:self action:@selector(btnLeftMenuClicked) forControlEvents:UIControlEventTouchUpInside];  
 UIBarButtonItem *sideMenuItem = [[UIBarButtonItem alloc] initWithCustomView:btnSideMenu];    
 self.navigationItem.leftBarButtonItem=sideMenuItem; 

【讨论】:

【参考方案2】:

您可以使用initWithCustomView 创建UIBarButtonItem

_leftButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_leftButton setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];
[_leftButton addTarget:self action:@selector(leftButton:) forControlEvents:UIControlEventTouchUpInside];
[_leftButton sizeToFit];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:_leftButton];

【讨论】:

以上是关于带有图像的 UIBarButtonItem 不显示的主要内容,如果未能解决你的问题,请参考以下文章

带有纵向和横向图像的 UIBarButtonItem 可能会显示横向的纵向图像

UIBarButtonItem 带有图像和文本以及边框?

带有图像和文本的 UIBarButtonItem

UIBarButtonItem 图像未显示,但显示为红色方块

将 UIBarButtonItem 与图像或系统预设一起用于 SplitView/Popover 控件

如何在 UIBarButtonItem 中显示 UIButton? (带有 IB 设计元素)