Ответ 1
То, как вы это делаете, должно работать, но это не так. Это действительно работает:
[[UINavigationBar appearanceWhenContainedIn:[YourOtherVC class], nil] setTintColor:[UIColor blackColor]];
Я создаю приложение со многими контроллерами представлений: у меня есть UITabBarController
, который содержит 4 UINavigationController
. Я хочу, чтобы все навигационные панели были моим собственным цветом, например синим цветом, который я достигаю, выполняя это в своем делете приложения:
[[UINavigationBar appearance] setTintColor:[UIColor blueColor]];
Но у меня также есть один специальный контроллер представления, у которого есть карта, и для этого контроллера представления я хочу переопределить синий набор навигаторов с помощью UIAppearance
, чтобы сделать его черным непрозрачным стилем. Я пробовал, вызывая это внутри viewDidLoad
:
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
self.navigationController.navigationBar.translucent = YES;
Но ничего не происходит. Можно ли это сделать или мне нужно отказаться от UIAppearance и установить свойства на navigationBar
вручную для каждого контроллера вида?
То, как вы это делаете, должно работать, но это не так. Это действительно работает:
[[UINavigationBar appearanceWhenContainedIn:[YourOtherVC class], nil] setTintColor:[UIColor blackColor]];
Переместите изменения в viewWillAppear: вместо viewDidLoad: и он должен работать.
Для этого вы бы сделали:
id specialNavBarAppearance = [UINavigationBar appearanceWhenContainedIn:[SpecialViewController class], nil];
[specialNavBarAppearance setBarStyle:UIBarStyleBlack];
[specialNavBarAppearance setTranslucent:YES];