2013-12-02 2 views
2

Мне нужно установить цвет фона UINavigationBars на то же значение, что и цвет фонового цвета моих приложений.Использование глобального цвета оттенков как UINavigationBars backgroundColor

проблема заключается в том, что теперь все кнопки в моей панели навигации имеют тот же цвет, что и его фон. Теперь я могу изменить цвет текста UIBarButtons на белый, но это было бы совершенно непригодно. использование API UIAppearance API, похоже, не является лучшим способом. после установки цвета текста элементов UIBarButton на белый, т. е. обратные стрелки кнопки «Назад» в моем UINavigationBar по-прежнему окрашены в глобальный оттенок.

также если я изменить глобальный оттенок цвета к белому я потерять всю гибкость, что глобальный оттенок цвета дает нам (и мой индикатор текста теперь будет белым и не будет видно на белом фоне)

, что я хочу:

enter image description here

то, что я получаю, используя синий, как глобальный оттенок цвета

enter image description here

, что я получаю при использовании синего в качестве глобального оттенка цвета и настройки uibarbutton пункты цвет текста на белый (см кнопку назад - он должен быть белым, а)

enter image description here

, что является рекомендуемым способом, чтобы исправить это проблема?

+0

Попробуйте установить цвет оттенка навигационной панели на белый. – OMK

ответ

4

Я рекомендую вам это сделать:

UINavigationBar *navigationBar  = [UINavigationBar appearance]; 
navigationBar.tintColor    = [UIColor whiteColor]; 

Разместите этот код в didFinishLaunchingWithOptions: метод в AppDelegate.

Для выяснения, как вы, очевидно, не очень опытные с этим:

barTintColor является свойством, которое изменит цвет бара. tintColor изменяет цвет интерактивных объектов (например, UIBarButtonItem s)

+0

, но моя панель навигации должна оставаться синей, а не белой. – choise

+1

Да. Это то, что позволяет этот код. TintColor изменяет кнопки, а не панель. –

0

Попробуйте установить UINavigationBar setTintColor в указанный контроллер (например, в viewDidLoad).

4
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)]) { 
    [[UINavigationBar appearance] setBarTintColor:[UIColor whiteColor]]; 
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; 
} 
Смежные вопросы