将后退按钮的背景更改为与导航栏相同

问题描述:

我正在尝试为导航栏和按钮实现自定义图像。我设法用这个将后退按钮的背景更改为与导航栏相同

this is what happens with the code below

 - (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]; 

,我想看起来像这样:what the goal is

+0

你想改变后退按钮哪个文件使用一个更精确的色彩?后退按钮必须在父导航文件中编辑。类似于更改按钮的文本。 – dbDev 2013-03-27 15:03:48

我认为,最简单的方法也是为了给导航栏着色,因为默认情况是那些栏杆项目总是使用导航栏的颜色。

[[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]; 

你也可以使用一个可调整大小的图像等