La coloración de la barra de navegación en ViewWillAppear ocurre demasiado tarde en iOS 10

Me enfrento a un error extraño, que ocurre solo en iOS 10.

Tengo una aplicación con varias pantallas, y cada pantalla colorea elnavigationBar enviewWillAppear. Entonces, cuando vayas a la siguiente pantalla, estará coloreada correctamente.

Sin embargo, cuando pruebo en iOS 10, de repente veo el siguiente comportamiento al volver a una pantalla anterior: Cuando aparece la pantalla anterior, elnavigationBar todavía tiene el color de la pantalla anterior y luego parpadea al color adecuado. Casi pareceviewWillAppear de alguna manera se comporta comoviewDidAppear.

Código relevante:

ViewController:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [ViewControllerPainter paint:self withBackground:[UIColor whiteColor] andForeground:[UIColor blackColor] andIsLight:true];

}

Pintor:

+ (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};
}

¿Es esto un error? ¿Hay algo que pueda hacer para solucionar esto? Es muy frustrante.

Respuestas a la pregunta(4)

Su respuesta a la pregunta