Parece suceder con cualquier barra (TabBar o ToolBar) que sea translúcida.
Entonces, una forma de solucionarlo es configurar el _tabBar.translucent = NO;
(en mi caso). Esto evita la sombra no deseada debajo de la barra de navegación superior mientras deja la barra de navegación translúcida. Desafortunadamente, la barra inferior ya no es translúcida.
Puede volver a ser translúcido, pero todo esto tiene que suceder después de que finalice toda la animación de empuje, por lo que el cambio de esta propiedad es bien notable.
Sin embargo, en caso de que la barra inferior también tenga que ser translúcida y no quiero que el usuario vea el cambio, lo resolví con lo siguiente:
/* create a simple quick animation of the bottom bar
just before pushing the new controller */
[UIView animateWithDuration:0.1
animations:^{
_tabBar.barTintColor = [UIColor colorWithWhite:0.97254901960784 alpha:1.0]; // this is the closest color for my case
_tabBar.translucent = NO;
} completion:^(BOOL finished) {
/* now when the animation that makes the bar not translucent
is finished we can push the new controller
the controller is instantiated before the animation code */
[self.navigationController pushViewController:controller animated:YES];
}];
Luego, en el viewDidAppear:
I simplemente revierte eso:
[UIView animateWithDuration:0.1
animations:^{
_tabBar.barTintColor = nil;
_tabBar.translucent = YES;
}];
Hay solo un pequeño cambio en la apariencia, especialmente, pero apenas se nota y es mucho mejor que tener la sombra debajo de la barra de navegación.
Espero que ayude a otros a mantener las barras translúcidas hasta que Apple corrija este comportamiento, ya que las barras ESTÁN destinadas a estar ocultas en algunos casos, a diferencia de lo que se sugirió en otras publicaciones, especialmente para UITabBar
darkColor
vista todavía está allí y causa este problema.