Изменить цвет полупрозрачного черного 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;