Изменить цвет полупрозрачного черного UINavigationBar - PullRequest
34 голосов
/ 21 июля 2011

Я сталкивался с этим много раз, так и не нашел решения. Панель навигации UINavigationController может быть установлена ​​в черный полупрозрачный как:

self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent;

Кроме того, в UINavigationBar есть полупрозрачное свойство, документы говорят:

Когда ДА, панель навигации отображается с частичной непрозрачностью, независимо барного стиля. Количество непрозрачности фиксировано и не может быть изменилось. Допустимо установить значение этого свойства, когда панель навигации управляется объектом контроллера навигации.

Я пытался

self.navigationcontroller.navigationBar.tintColor=[UIColor blueColor];
self.navigationcontroller.navigationBar.translucent=YES;

и тысяча вариантов: сначала установите полупрозрачное свойство, задайте его в AppDelegate и в ViewController, установите в первую очередь барстиль. Результат всегда один и тот же: Нет прозрачности. Отсюда мой вопрос:

Действительно ли возможно изменить цвет полупрозрачной панели UINavigationBar на что-то отличное от черного (предпочтительно в контроллере UINavigationController)?.

Я надеюсь, что есть решение, безопасное для обзора.

Спасибо, м

Ответы [ 4 ]

50 голосов
/ 05 августа 2011

Как только вы это узнаете, все становится довольно просто:

self.navigationController.navigationBar.tintColor = [UIColor blueColor];
self.navigationController.navigationBar.alpha = 0.7f;
self.navigationController.navigationBar.translucent = YES;

Свойство translucent, по-видимому, определяет только то, должен ли основной вид быть видимым под панелью навигации, и соответственно изменяет его размер.

17 голосов
/ 12 сентября 2012

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

self.navigationController.navigationBar.translucent = YES;
[(UIView*)[self.navigationController.navigationBar.subviews objectAtIndex:0] setAlpha:0.7f];
4 голосов
/ 26 февраля 2013

По крайней мере, в iOS 6 на iPhone 4S вы можете создать цветную полупрозрачную панель навигации, например:

self.navigationController.navigationBar.tintColor = [UIColor blueColor];
self.navigationController.navigationBar.translucent = YES;

Настройка альфа больше не нужна. Это также оставляет мой заголовок ярко-белым и мои кнопки непрозрачными.

0 голосов
/ 09 марта 2015

Вот решение:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:3.f/255.f green:8.f/255.f blue:61.f/255.f alpha:1]];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.barTintColor = [UINavigationBar appearance].barTintColor;
...