iOS无法正确更改UIBarButtonItem图像

问题描述:

我在尝试更改UINavigationBar的“后退”按钮自定义图标时出现问题。为了实现这样的事情,我使用下面的代码:iOS无法正确更改UIBarButtonItem图像

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIBarButtonItem* leftBtn; 
    UIImage* botonVolverImg = [UIImage imageNamed:@"boton_volver.png"]; 

    leftBtn = self.navigationItem.leftBarButtonItem; 
    leftBtn.image = botonVolverImg; 
} 

不过,有观点出现时,你会看到这一点:

a busy cat http://www.timotteo.com.ar/boton.png

(你可以看到,旧的按键仍出现在后面,加上我选择的图像看起来有点拉伸)

我一直在改变imageInsets财产,但似乎并没有工作。我也一直在阅读论坛,但无法找到确切的解决方案。

欢迎任何建议!

+0

如果你只是使用文本和字符串标题,你不能只在你的UIBarButtonItem上设置'title'属性吗?对我来说似乎没有多少麻烦。 – 2011-12-26 17:04:33

+0

嗨@MichaelDautermann,这似乎是一个好主意,但我的客户想要这个特定的图像,所以我必须让它工作 – 2011-12-26 17:59:02

为了补充马克的回答,如果你的客户需要你支持的iOS 4,您可以创建一个UIButton看起来正是你的客户是怎么想(即,只是图像),然后使用UIBarButtoninitWithCustomView方法创建您自己的后退按钮。然后,您可以使用该按钮触发popViewController或您需要的任何适当的操作。

+0

这正是我所寻找的。 – 2011-12-26 18:43:42

image属性UIBarButtonItem不对应于背景图片,只有图片提供了额外的上下文。如果你的目标是5.0+,那么最好的办法就是使用-setBackButtonBackgroundImage:forState:barMetrics:来设置条形按钮项目的背景。

+2

在这种情况下,因为它特别是我们正在讨论的'后退'按钮,'setBackButtonBackgroundImage:forState:barMetrics: '可能是更好的选择。 ' – lxt 2011-12-26 18:11:21

+0

你当然是对的。编辑。 – 2011-12-26 18:12:10

+0

这似乎是一个很酷的解决方案,但遗憾的是我必须使用的xcode/ios版本(客户的要求)似乎不支持这种方法(我正在讨论setBackButtonBackgroundImage) – 2011-12-26 18:44:42