0

我正在尝试为导航栏和上面的按钮实现自定义图像。我设法使用它为我的导航背景设置了正确的设置

这就是下面的代码发生的事情

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

我想让它看起来像这样:目标是什么

4

2 回答 2

1

我认为最简单的方法是对导航栏进行着色,因为默认情况下那些栏按钮项始终使用导航栏的颜色。

[[UINavigationBar appearance] setTintColor:[UIColor redColor]];

或者您可以使用 rgb 值使用更精确的颜色

[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:val green:val blue:val alpha:1]];
于 2013-03-27T15:33:53.613 回答
0

我使用自定义图像创建了我的有色按钮(请参阅最后的代码)然后只需将 设置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];

您还可以使用可调整大小的图像等

于 2013-03-27T15:05:22.460 回答