У меня есть приложение, которое захватывает значения конфигурации из удаленного источника при первоначальном запуске. Одно из этих значений является navigationBar
tintColor
setBarTintColor после просмотра загружается
В моей viewWillAppear
я это:
UINavigationBar *navigationBar = self.navigationController.navigationBar;
[navigationBar setBarTintColor:[self UIColorFromRGB:config.navColor]];
[navigationBar setNeedsDisplay];
NSLog(@"Color after SND: %@", config.navColor);
Когда приложение запускает, это печатает на консоли:
Color after SND: 39589a
Следовательно, barTintColor
является ожидаемый синий.
Когда синхронизация завершается, я вручную вызываю viewWillAppear
(а также viewDidLoad
), и все, кроме barTintColor
, в интерфейсе настраивается так, как ожидалось. Я также получить то, что я ожидал бы печать на консоль:
Color after SND: a1231c
Но barTintColor остается тем же, пока я не закрыть приложение и запустить его снова (синхронизация повторно не срабатывает, когда приложение запускает второй раз).
Любые идеи, что мне не хватает, чтобы заставить navigationBar
tintColor
обновить после того, как представление уже загружено?
EDIT: Чтобы быть ясно, что это не UIColorFromRGB
, что мешает, я выполнил два теста:
Это:
NSLog(@"UIColor Result: %@", [UIColor redColor]);
и это:NSLog(@"UIColor Result: %@", [self UIColorFromRGB:@"ff0000"]);
как произвести это:UIColor Result: UIDeviceRGBColorSpace 1 0 0 1
Я добавил:
если (обновлениеBarColor) { NSLog (@ "настройка на красный"); UINavigationBar * навигацияBar = self.navigationController.navigationBar; [навигацияBar комплектBarTintColor: [UIColor красныйColor]]; [навигацияBar комплектNeedsDisplay]; }
помещавший ожидаемое сообщение на консоль, но не изменить цвет панели навигации.
Я действительно не думаю, что вы должны называть 'viewDidAppear' и 'viewDidLoad' самостоятельно. –
какая версия iOS? setBarTintColor и setTintColor делают разные вещи в разных версиях. Попробуйте вызвать setTintColor вместо/и посмотреть, что он делает! – RobP
@RobP iOS 7.0, 7.1 и 8.1. Я играл с теми, кто разочарован, но, на самом деле, это не одно и то же. «barTintColor» - это то, что применяется к фону панели, а «tintColor» - это то, что применяется к элементам навигации и элементам кнопок панели. https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UINavigationBar_Class/index.html –