#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. Это не то, что я предлагал в своем ответе, но в этом вы правы.