Как удалить стиль из UIBarButtonItem? - PullRequest
2 голосов
/ 20 ноября 2011

При использовании пользовательской графики в UIBarButtonItem внутри UIToolbar, программа автоматически превращает вашу графику в белый цвет и применяет внутреннюю тень.Как я могу предотвратить это автоматическое моделирование и использовать свой собственный графический перевод?

screenshot of toolbar

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

Вот класс, который я создал и который наследует от UIBarButtonItem, основанного на изображениях:

    #import "XXBarButtonImageItem.h"

    @implementation XXBarButtonImageItem

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

    @end
1 голос
/ 20 ноября 2011

Вот как это обычно делается:

UIImage *buttonImage = [UIImage imageNamed:@"myImage.png"];     
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];

[myButton setImage:buttonImage forState:UIControlStateNormal];
[myButton setImage:buttonImage forState:UIControlStateHighlighted];

UIBarButtonItem *myBtnItem = [[UIBarButtonItem alloc] initWithCustomView:myButton];

[myButton addTarget:self action:@selector(someSelector:) forControlEvents:UIControlEventTouchUpInside];
[myBtn setFrame:CGRectMake(someX, someY, someWidth, someHeight)];
[self.toolbar setItems:[NSArray arrayWithObjects:someBtnItemOne, myBtnItem, someBtnItemThree, nil]];
[myBtnItem release];

Если это не поможет, не могли бы вы показать код, который вы используете для инициализации панели инструментов и элементов кнопок?

...