我需要工具栏中的自定义图标(黄色工具栏背景上的黑色图标)。 我试过UIBarButtonItem initWithImage构造函数,但是这种情况 是使用alpha值显示的图标,似乎没有办法 更改基本的白色图标颜色。我最终使用了UIButton,但它会好得多, 只是更改默认图标颜色,是否可能?
UIImage *buttonImage = [UIImage imageNamed:iconName];
UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithImage:buttonImage style:UIBarButtonItemStylePlain target:nil action:nil];
答案 0 :(得分:1)
您可以通过设置色调使工具栏变黄:
toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5];
如果你想要自定义UIBarButtonItem与自定义图像,颜色等......就像你在UIButton中得到的那样,一个选项是创建一个类,它将UIButton封装为UIBarButtonItem中的自定义视图。这是我的自定义类 - 希望它有所帮助:
@interface ENBarButtonImageItem : UIBarButtonItem
{
UIButton *_button;
}
@implementation ENBarButtonImageItem
- (id)initWithFrame:(CGRect)frame
image:(UIImage*)image
backgroundImage:(UIImage*)bgImage
{
_button = [UIButton buttonWithType:UIButtonTypeCustom];
[_button setFrame:frame];
self = [super initWithCustomView:_button];
if (self)
{
if (image)
[_button setImage:image forState:UIControlStateNormal];
if (bgImage)
[_button setBackgroundImage:bgImage forState:UIControlStateNormal];
}
return self;
}
- (id)initWithFrame:(CGRect)frame
image:(UIImage*)image
backgroundImage:(UIImage*)bgImage
target:(id)target
action:(SEL)selector
{
self = [self initWithFrame:frame image:image backgroundImage:bgImage];
if (self)
{
[_button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
}
return self;
}
- (void)dealloc
{
[super dealloc];
[_button release];
}
- (void)addTarget:(id)target action:(SEL)selector forControlEvents:(UIControlEvents)controlEvents
{
[_button addTarget:target action:selector forControlEvents:controlEvents];
}
- (void)setImage:(UIImage *)image forState:(UIControlState)state
{
[_button setImage:image forState:state];
}
- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state
{
[_button setImage:image forState:state];
}
答案 1 :(得分:0)
读取initWithImage参数的描述:style:target:action:
图像
该项目的图像。如果没有显示图像。
条形图上显示的图像来自此图像。如果此图像太大而无法放在条形图上,则会缩放以适合该图像。通常,工具栏和导航栏图像的大小为20 x 20磅。源图像中的alpha值用于创建图像 - 忽略不透明值
除alpha之外的所有内容都会被忽略工具栏是黑白的
子类或使用其他UI框架,如three20,如果你真的需要那里的颜色。