0

在我的UINavigationController中,我通过故事板添加了一个添加按钮。我的添加按钮是来自iOS/xcode的默认“+”UIBarButtonItem。我想添加一个自定义背景图片到按钮。我的代码不工作:不添加背景图片。设置导航栏项目的背景图像

-(void)addBackgroundToPlusSign 
{ 
    UIImage *addBkg = [UIImage imageNamed:@"plus_sign"]; 
    addBkg = [addBkg imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
    [self.navigationItem.rightBarButtonItem setBackButtonBackgroundImage:addBkg forState:UIControlStateNormal barMetrics:0]; 
} 

我尝试调用viewDidLoad的方法,然后在viewWillAppear。没有运气。

回答

1

你的问题是,你是在正确的导航按钮设置后退按钮的背景图片...向右导航按钮不是按钮。从文档:

此修改器仅适用于导航栏后退按钮,并且 被其他按钮忽略。

你想用setBackgroundImage:forState:barMetrics:

+0

啊哈!我正在使用'setBackButtonBackgroundImage'而不是'setBackgroundImage'。答对了!谢谢。复制和粘贴错误让我很不好。 – 2014-09-26 23:08:49

+0

很高兴帮助:) – Mike 2014-09-26 23:18:51

0

您可以添加的UIImageView或按钮,例如:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 0, 70, 30)]; 

[button setImage:[UIImage imageNamed:@"plus_sign"] forState:UIControlStateNormal]; 
[button addTarget:self action:@selector(your_method) forControlEvents:UIControlEventTouchUpInside]; 

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

self.navigationItem.rightBarButtonItem = buttonItem; 
+0

你正在回答我已经知道如何解决的另一个问题。我想要的是为Xcode附带的按钮添加背景。如果您认为加号是一个简单的例子,那么可以想象一个更复杂的按钮,如垃圾桶或相机。 – 2014-09-26 23:05:18

0

尝试这样做:

UIBarButtonItem * addBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(btnHandler:)]; 

UIImage *addBkg = [UIImage imageNamed:@"plus_sign"]; 
addBkg = [addBkg imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
[addBtn setBackgroundImage:addBkg forState:UIControlStateNormal barMetrics:0]; 

self.navigationItem.rightBarButtonItem = addBtn; 

我觉得曾经有一个错误在那里设置一个现有按钮的背景没有工作,直到有人再次 - 添加到视图堆栈。你也可以尝试一下:

self.navigationItem.rightBarButtonItem = self.navigationItem.rightBarButtonItem;