在ios 7中更改UIBarButtonItem的背景颜色

时间:2014-08-25 06:14:41

标签: ios ios7 uinavigationcontroller uibarbuttonitem

我有一个带有正确UIBarButtonItem的UINavigationBar。

如何仅更改按钮的背景颜色(而不是文本)?

UIBarButtonItem *postButton = [[UIBarButtonItem alloc] initWithTitle:@"POST" style:UIBarButtonItemStylePlain target:self action:@selector(postButtonPressed:)];

// Changes text color
postButton.tintColor = [UIColor blueColor];

如何更改背景颜色?

3 个答案:

答案 0 :(得分:2)

使用storyboard或XIB,您可以将UIButton直接添加到导航栏并更改UIButton背景颜色。

enter image description here

enter image description here

答案 1 :(得分:1)

使用appearance代理,

使用您喜欢的颜色创建1x1像素图像。在这种情况下,此图像的名称为" icons_gb.png"。然后将以下代码添加到AppDelegate.m。图像颜色将在按钮的背景中重复。

UIImage *btnBg = [[UIImage imageNamed:@"icons_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

[[UIBarButtonItem appearance] setBackgroundImage:btnBg 
                                        forState:UIControlStateNormal
                                      barMetrics:UIBarMetricsDefault];

答案 2 :(得分:0)

您可以通过以下方式进行更改:

yourNavigationBar.barTintColor = [UIColor yellowColor];

导航栏的颜色也会改变。

如果您只想更改UIBarButtonItem,请使用我的自定义类:

的UIBarButtonItem + Custom.h

#import <UIKit/UIKit.h>

@interface UIBarButtonItem (Custom)
+ (UIBarButtonItem *) barItemWithImage:(UIImage *)img size:(CGSize)size target:(id)target action:(SEL)selector;
@end

的UIBarButtonItem + Custom.m

#import "UIBarButtonItem+Custom.h"

@implementation UIBarButtonItem (Custom)
+ (UIBarButtonItem *) barItemWithImage:(UIImage *)img size:(CGSize)size target:(id)target action:(SEL)selector
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

    [button setImage:img forState:UIControlStateNormal];

    button.frame= CGRectMake(0.0, 0.0, size.width, size.height);

    [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *forward = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];

    return forward;
}
@end
相关问题