将后退按钮的背景更改为与导航栏相同
问题描述:
我正在尝试为导航栏和按钮实现自定义图像。我设法用这个将后退按钮的背景更改为与导航栏相同
- (void)customAppearance
{
UIImage* NavBG = [UIImage imageNamed:@"header.png"];
[[UINavigationBar appearance] setBackgroundImage:NavBG forBarMetrics:UIBarMetricsDefault];
}
,以获得正确的设置为我导航背景,但是当我尝试做的后退按钮或其他按钮,这一切只是融汇类似的东西(我可以看到返回按钮的话,但没有轮廓的后退按钮时)
这里就是我对后退按钮
UIImage *backButtonBG = [[UIImage imageNamed:@"header.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 6)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonBG forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
,我想看起来像这样:
答
我认为,最简单的方法也是为了给导航栏着色,因为默认情况是那些栏杆项目总是使用导航栏的颜色。
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
或U可以使用RGB值
[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:val green:val blue:val alpha:1]];
+0
真棒,这正是我需要的,太简单了。谢谢! – BluGeni 2013-03-27 16:08:11
答
我使用自定义图像创建了我的有色按钮(请参见代码结尾处)然后,只需将该按钮设置为leftBarButtonItem
即可。
+ (UIBarButtonItem *)createBarButtonItemWithImage:(UIImage *)normalImage highlightedImage:(UIImage *)highlightedImage
{
UIBarButtonItem *barButtonItemToReturn;
if (normalImage == nil && highlightedImage == nil)
{
return barButtonItemToReturn;
}
else if (normalImage != nil)
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:normalImage forState:UIControlStateNormal];
if (highlightedImage != nil)
{
[button setImage:highlightedImage forState:UIControlStateHighlighted];
[button setFrame:CGRectMake(0, 0, normalImage.size.width, normalImage.size.height)];
}
barButtonItemToReturn = [[UIBarButtonItem alloc] initWithCustomView:button];
}
return barButtonItemToReturn;
}
当你想添加一个目标/行动,你必须通过添加它:
[((UIButton*)barButtonItem.customView) addTarget:self selector:@selector(doSomething:) forControlEvents:UIControlEventTouchUpInside];
你也可以使用一个可调整大小的图像等
你想改变后退按钮哪个文件使用一个更精确的色彩?后退按钮必须在父导航文件中编辑。类似于更改按钮的文本。 – dbDev 2013-03-27 15:03:48