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.