设置导航栏项目的背景图像
问题描述:
在我的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
。没有运气。
答
你的问题是,你是在正确的导航按钮设置后退按钮的背景图片...向右导航按钮不是回按钮。从文档:
此修改器仅适用于导航栏后退按钮,并且 被其他按钮忽略。
你想用setBackgroundImage:forState:barMetrics:
答
您可以添加的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
答
尝试这样做:
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;
啊哈!我正在使用'setBackButtonBackgroundImage'而不是'setBackgroundImage'。答对了!谢谢。复制和粘贴错误让我很不好。 – 2014-09-26 23:08:49
很高兴帮助:) – Mike 2014-09-26 23:18:51