Cela semble se produire avec n'importe quelle barre (TabBar ou ToolBar) translucide.
Donc, une façon de résoudre ce problème est de définir le _tabBar.translucent = NO;
(dans mon cas). Cela empêche l'ombre indésirable sous la barre de navigation supérieure tout en laissant la barre de navigation translucide. Malheureusement, la barre inférieure n'est plus translucide.
Il peut être remis à translucide, mais tout cela doit se produire une fois que toute l'animation de poussée est terminée, donc la commutation de cette propriété est bien perceptible.
Au cas où, cependant, la barre inférieure doit également être translucide et je ne veux pas que l'utilisateur voie le changement, je l'ai résolu avec ce qui suit:
/* 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];
}];
Ensuite, dans le viewDidAppear:
je retourne simplement cela:
[UIView animateWithDuration:0.1
animations:^{
_tabBar.barTintColor = nil;
_tabBar.translucent = YES;
}];
Il y a juste un petit changement dans l'apparence en particulier, mais c'est à peine perceptible et c'est bien mieux que d'avoir l'ombre sous la barre de navigation.
J'espère que cela aidera les autres à garder les barres translucides jusqu'à ce qu'Apple corrige ce comportement car les barres SONT censées être cachées dans certains cas contrairement à ce qui a été suggéré dans d'autres articles, en particulier pour le UITabBar
darkColor
vue soit toujours présente et provoque ce problème.