Есть ли простой способ изменить цвет текста UIBarButtonItem без использования изображения?

#iphone #cocoa-touch #ios4 #uibarbuttonitem

#iPhone #cocoa-touch #ios4 #uibarbuttonitem

Вопрос:

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

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

Ответ №1:

Благодаря 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];

}
  

Ответ №2:

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

Это пример с пользовательской графикой для пользовательского UIButton. Идея остается прежней: используйте 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];
  

Ответ №3:

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

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

Ответ №4:

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

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

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

Удачи!

Комментарии:

1. Просто отметим, что свойство tintColor не поддерживается до iOS 5.

2. На самом деле, согласно документам Apple, tintColor доступен с iOS 2.0

3. Согласно документам Apple, не для UIBarButtonItem developer.apple.com/library/IOs/documentation/UIKit/Reference / …

4. Это не то, что я предлагал в своем ответе, но в этом вы правы.