Изменить цвет полупрозрачного черного UINavigationBar

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

self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent;

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

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

Я старался

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

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

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

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

Спасибо м

4 ответа

Решение

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

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

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

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

self.navigationController.navigationBar.translucent = YES;
[(UIView*)[self.navigationController.navigationBar.subviews objectAtIndex:0] setAlpha:0.7f];

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

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

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

Вот решение:

[[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;
Другие вопросы по тегам