为什么不直接使用 CustomView?
如在UIBarButtonItem initWithCustomView:
然后,您可以准确控制按钮(您必须为其提供图形)的显示方式。
这是一个相关的问题,讨论如何设置自定义视图以响应点击。
编辑:
这里有一些代码在错误检查方面有些过头了,但我很确定在你的设置中有些地方不太对劲。使用它,我们也许能够找出它是什么。
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
if(btn)
{
[btn setBackgroundImage:[UIImage imageNamed:@"19-gear.png"] forState:UIControlStateNormal];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:btn];
if(barButton)
{
if(self.navigationController)
{
if(self.navigationController.navigationBar)
{
if(self.navigationController.navigationBar.topItem)
{
self.navigationController.navigationBar.topItem.leftBarButtonItem = barButton;
} else {
NSLog( @"why is topItem null?");
}
} else {
NSLog( @"navigationBar appears to be null");
}
} else {
NSLog( @"navigationController is null");
}
} else {
NSLog(@"did not create UIBarButtonItem");
}
} else {
NSLog( @"did not create UIButton");
}