изменение цвета значка по умолчанию на панели инструментов iOS - PullRequest
0 голосов
/ 21 сентября 2011

Мне нужны пользовательские значки на панели инструментов (черные значки на желтом фоне панели инструментов).Я попытался UIBarButtonItem initWithImage конструктор, но в этом случае значок отображается с использованием альфа-значений, и кажется, что нет способа изменить основной белый цвет значка.Я закончил тем, что использовал UIButton, но будет намного лучше, просто изменить цвет значка по умолчанию, это возможно?

UIImage *buttonImage = [UIImage imageNamed:iconName];

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

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Вы можете сделать панель инструментов желтой, установив оттенок:

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];
}
0 голосов
/ 21 сентября 2011

Прочитать описание параметров initWithImage: style: target: action:

image
Изображение предмета.Если ноль, изображение не отображается.

Изображения, отображаемые на панели, получены из этого изображения.Если это изображение слишком велико, чтобы поместиться на панели, оно масштабируется, чтобы соответствовать.Как правило, размер панели инструментов и изображения панели навигации составляет 20 х 20 точек.Альфа-значения в исходном изображении используются для создания изображений - непрозрачные значения игнорируются.

Все, кроме альфа-канала, игнорируется.Панель инструментов черно-белая.
Подкласс или используйте другие UI-фреймворки, например three20 , если вам действительно нужны цвета.

...