Есть ли простой способ изменить цвет текста UIBarButtonItem без использования изображения? - PullRequest
0 голосов
/ 13 апреля 2011

Существует ли простой способ изменить цвет текста UIBarButtonItem без использования UIImage в качестве фона?

По умолчанию текст всегда белый.Я хотел бы сделать его черным.

Ответы [ 4 ]

6 голосов
/ 17 июля 2012

Благодаря IOS 5.0 вам не нужно использовать изображения для этого. Вы можете установить различные атрибуты текста с помощью следующего кода.

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithTitle:@"Title"     style:UIBarButtonItemStyleBordered target:nil action:nil];

if ([button respondsToSelector:@selector(setTitleTextAttributes:forState:)]) {

    NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                               kTextColor,UITextAttributeTextColor,
                                               nil];

    [[UIBarButtonItem appearance] setTitleTextAttributes:textAttributes                   
                                  forState:UIControlStateNormal];

}
1 голос
/ 13 апреля 2011

Пользовательский вид можно настроить с помощью

[[UIBarButtonItem alloc] - (id)initWithCustomView:(UIView *)customView]

1 голос
/ 13 апреля 2011

Я бы предпочел использовать UIButton внутри UIBarButtonItem и настроить его.

Это пример с пользовательской графикой для пользовательской кнопки UIB. Идея остается той же самой, используя initWithCustomView UIBarButtonItem, чтобы добавить в него что-то другое, что легко настраивается.

self.closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
[closeButton setImage:[UIImage imageNamed:@"webview_close_button_normal.png"] forState:UIControlStateNormal];
[closeButton setImage:[UIImage imageNamed:@"webview_close_button_pressed.png"] forState:UIControlStateHighlighted];
closeButton.frame = CGRectMake(0, 0, 121, 36);
[closeButton addTarget:self action:@selector(closeAdViewController) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem * aBarButtonAdClose = [[[UIBarButtonItem alloc] initWithCustomView:closeButton] autorelease];
0 голосов
/ 13 апреля 2011

Прямой ответ на ваш вопрос - нет.

Вы не можете просто изменить цвет UIBarButtonItem, установив одно из его свойств. Вы можете установить свойство tintColor для UIToolBar или UINavigationBar, которое содержит UIBarButtonItem s, но также влияет на цвет самой панели инструментов и не предлагает слишком много настроек.

Если это не сработает, то хорошим вариантом будет пользовательское представление, как предлагают другие ответы.

Удачи!

...