我有一个带有正确UIBarButtonItem的UINavigationBar。
如何仅更改按钮的背景颜色(而不是文本)?
UIBarButtonItem *postButton = [[UIBarButtonItem alloc] initWithTitle:@"POST" style:UIBarButtonItemStylePlain target:self action:@selector(postButtonPressed:)];
// Changes text color
postButton.tintColor = [UIColor blueColor];
如何更改背景颜色?
答案 0 :(得分:2)
答案 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