Раскраска панели навигации в 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};
}

Это ошибка? Есть ли что-то, что я могу сделать, чтобы это исправить? Это очень расстраивает.

Ответы на вопрос(4)

Ваш ответ на вопрос