Iphone 更改iOS工具栏中的默认图标颜色

Iphone 更改iOS工具栏中的默认图标颜色,iphone,ios,icons,toolbar,Iphone,Ios,Icons,Toolbar,我需要在工具栏中自定义图标(黄色工具栏背景上的黑色图标)。 我尝试了UIBarButtonim initWithImage构造函数,但它不能解决这个问题 图标是用alpha值显示的,似乎没有办法 更改基本白色图标颜色。我最终使用了UIButton,但会更好, 只需更改默认图标颜色,可以吗 UIImage *buttonImage = [UIImage imageNamed:iconName]; UIBarButtonItem *bi = [[UIBarButtonItem alloc] ini

我需要在工具栏中自定义图标(黄色工具栏背景上的黑色图标)。 我尝试了UIBarButtonim initWithImage构造函数,但它不能解决这个问题 图标是用alpha值显示的,似乎没有办法 更改基本白色图标颜色。我最终使用了UIButton,但会更好, 只需更改默认图标颜色,可以吗

UIImage *buttonImage = [UIImage imageNamed:iconName];

UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithImage:buttonImage style:UIBarButtonItemStylePlain target:nil action:nil];

阅读initWithImage:style:target:action:的参数说明

图像
项目的图像。如果无,则不显示图像。

条形图上显示的图像源自此图像。如果此图像太大而无法在条形图上显示,则会将其缩放以适合。通常,工具栏和导航栏图像的大小为20 x 20点。源图像中的alpha值用于创建图像。忽略不透明值。

除了alpha之外的所有内容都被忽略。工具栏是黑白的。

子类或使用其他UI框架,如您确实需要颜色。

您可以通过设置色调使工具栏变为黄色:

toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5];
如果你想自定义UIBarButtonItem与自定义图像,颜色等。。。与您在UIButton中得到的一样,一个选项是创建一个类,将UIButton封装为UIBarButtonim中的自定义视图。这是我的自定义类-希望它有帮助:

@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];
}

是的,这基本上就是我现在所拥有的,但问题是UIButton的行为不同,在action方法中,我只有UIButton指针,我不能使用popover PresentPopover FromBarButtonim,现在处理popover有点棘手。。。