Ответ 1
Полное решение, которое мгновенно изменяет цвет навигатора и запоминает предпочтение для последующих запусков, можно найти здесь: iPhone iOS как перерисовать UINavigationBar по запросу?
Этот код может изменять цвет UINavigationBar
везде в приложении. Однако я заметил, что он не меняет UIColor
UINavigationBar
, используемый UINavigationController
(мой происходит от UIStoryboard
).
UIColor* navBarColor = [UIColor colorWithRed:arc4random()%100/100.0
green:arc4random()%100/100.0
blue:arc4random()%100/100.0
alpha:1];
[[UINavigationBar appearance] setTintColor:navBarColor];
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];
[[UINavigationBar appearance] setAlpha:0.7];
Есть ли способ доступа к объекту appearance
на панели навигации UINavigationController's
? Я знаю, как устанавливать оттенки отдельных контроллеров, но я хочу иметь глобальный контроль над тем, как они смотреть.
Обновление:
Это была моя ошибка, код изменяет UIColor
всех UINavigationBars
, но для этого требуется, чтобы корневой навигационный контроллер был закрыт и раскрыт (например, представляя контроллер модального представления), затем он будет повторно рисовать себя с помощью нового UIColors
!
Спасибо!
Полное решение, которое мгновенно изменяет цвет навигатора и запоминает предпочтение для последующих запусков, можно найти здесь: iPhone iOS как перерисовать UINavigationBar по запросу?
Когда вы объявляете свой UINavigationController
, попробуйте следующее:
UINavigationController *myNavController =
[[UINavigationController alloc] initWithRootViewController:myRootViewController];
myNavController.navigationBar.tintColor =
[UIColor colorWithRed:arc4random() % 100 / 100.0f
green:arc4random() % 100 / 100.0f
blue:arc4random() % 100 / 100.0f
alpha:1.0f];
Вы можете изменить цвета бара глобально с помощью appearance
прокси:
NSDictionary *textTitleOptions =
[NSDictionary dictionaryWithObjectsAndKeys:[UIColor darkGrayColor],
UITextAttributeTextColor,
[UIColor whiteColor],
UITextAttributeTextShadowColor, nil];
[[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions];
textTitleOptions =
[NSDictionary dictionaryWithObjectsAndKeys:[UIColor darkGrayColor],
UITextAttributeTextColor, nil];
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
[[UIToolbar appearance] setTintColor:[UIColor redColor]];
[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]];
Теперь в iOS 8 мы можем установить цвет оттенка следующим образом: -
self.navigationController.navigationBar.barTintColor = [UIColor redColor];