Подтвердить что ты не робот

Как изменить цвет текста на элементах кнопки UINavigationBar

У меня есть UINavigationController, и я изменил его на белый, используя свойство Tint на панели навигации в Interface Builder. Но текст в кнопках и заголовке по-прежнему является по умолчанию цветным, белым и поэтому теряется на белом фоне. Кто-нибудь знает, как обойти это?

4b9b3361

Ответ 1

Как и в iOS 5, это намного проще, используя прокси-сервер UIBarButtonItem:

 NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys: 
                        [UIColor blackColor], 
                        UITextAttributeTextColor, 
                        [UIColor clearColor], 
                        UITextAttributeTextShadowColor, nil];

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

Задайте это в приложении: didFinishLaunchingWithOptions:

Ответ 2

for (id subView in theNavigationBar.subviews) {
    if ([subView isKindOfClass:[UIButton class]]) {
        [(UIButton *)subView setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [(UIButton *)subView setTitleShadowColor:[UIColor clearColor] forState:UIControlStateNormal];
    }

}

Ответ 3

Здесь один из способов:

[[theNavigationBar.subviews objectAtIndex:1] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[[theNavigationBar.subviews objectAtIndex:2] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

Однако, ОГРОМНЫЙ, оставьте. Это, скорее всего, приведет к разрыву в будущей версии ОС и не рекомендуется.

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

Ответ 4

Или вы используете свой собственный подклассу элемента панели кнопок с указанным вами установщиком, lus не iPhone os 3 Предположим, чтобы текст текста exposé для кнопки "КАЖДЫЙ"

Ответ 5

Я сделал, как предложил пьянка. Я прибегал к созданию серии изображений для обратной кнопки в нескольких состояниях и регулярных кнопок в нескольких состояниях и помещал их в пользовательский подкласс UIButton, настраивая соответствующие стили.

В качестве решения он не очень хорошо масштабируется, но мои потребности были достаточно простыми. Преимущество этого заключается в том, что он не нарушается, если изменения подчиненных заказов во встроенных элементах управления изменяются, что является очевидным недостатком этого подхода. Недостаток необходимости в нескольких изображениях. Другая сложная задача - изменить ориентацию, так как кнопки должны менять размер.

В соответствующей заметке, если вы изменили цвет оттенка вашей панели навигации, он не очень хорошо работает со специальным контроллером просмотра "Больше" для настройки порядка панели вкладок. Кажется, нет никакого "приемлемого" способа изменить цвет панели инструментов в этом представлении.

Ответ 6

Не можете ли вы повторить содержимое представления UINavigationBar, чтобы найти кнопки в awakeFromNib?

Ответ 7

Здесь чистый способ (полагаясь на открытый API) для этого IMHO: вы должны использовать свойство titleView объекта навигации navigation/ltd, чтобы применить его собственный UILabel, на котором вы настроите textColor


UILabel * lbl = [[UILabel alloc] initWithFrame: CGRectMake (0, 0, 320, 20)];
lbl.textAlignment = UITextAlignmentCenter;
lbl.backgroundColor = [UIColor clearColor];
lbl.textColor = [UIColor colorWithRed: 0,18 зеленый: 0,2 синий: 0,56 альфа: 1];
theControllerOnWhichYouWantToHaveATitleWithYourOwnColor.navigationItem.titleView = LBL;
[lbl release];

Ответ 8

вы можете изменить внешний вид заголовка, добавив метку в панель навигации, как показано ниже.

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 35)];
label.backgroundColor = [UIColor clearColor];
label.textAlignment = UITextAlignmentCenter;
label.textColor =[UIColor whiteColor];
label.text=self.title;
self.navigationItem.titleView = viewLabel;
[label release];