Раскраска панели навигации в ViewWillAppear происходит слишком поздно в iOS 10
Я сталкиваюсь со странной ошибкой, которая происходит только на iOS 10.
У меня есть приложение с несколькими экранами, и каждый экран окрашиваетnavigationBar
вviewWillAppear
, Поэтому, когда вы перейдете к следующему экрану, он будет правильно окрашен.
Однако при тестировании на iOS 10 я внезапно вижу следующее поведение при возвращении к предыдущему экрану: когда появляется предыдущий экран,navigationBar
по-прежнему имеет цвет предыдущего экрана, а затем мигает до нужного цвета. Это выглядит почти какviewWillAppear
как-то ведет себя какviewDidAppear
.
Соответствующий код:
ViewController:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[ViewControllerPainter paint:self withBackground:[UIColor whiteColor] andForeground:[UIColor blackColor] andIsLight:true];
}
Художник:
+ (void)paint:(UIViewController *)controller withBackground:(UIColor *)backgroundColor andForeground:(UIColor *)foregroundColor andIsLight:(bool)isLight
{
controller.navigationController.navigationBar.opaque = true;
controller.navigationController.navigationBar.translucent = false;
controller.navigationController.navigationBar.tintColor = foregroundColor;
controller.navigationController.navigationBar.barTintColor = backgroundColor;
controller.navigationController.navigationBar.backgroundCo,lor = backgroundColor;
controller.navigationController.navigationBar.barStyle = isLight ? UIBarStyleDefault : UIBarStyleBlack;
controller.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: foregroundColor};
}
Это ошибка? Есть ли что-то, что я могу сделать, чтобы это исправить? Это очень расстраивает.