Es scheint mit jeder Leiste (TabBar oder ToolBar) zu passieren, die durchscheinend ist.
Eine Möglichkeit, dies zu beheben, besteht darin, die _tabBar.translucent = NO;
(in meinem Fall) festzulegen. Dies verhindert den unerwünschten Schatten unter der oberen Navigationsleiste, während die Navigationsleiste durchscheinend bleibt. Leider ist die untere Leiste nicht mehr durchscheinend.
Es kann wieder auf durchscheinend gesetzt werden, aber all dies muss geschehen, nachdem die gesamte Push-Animation beendet ist, sodass das Umschalten dieser Eigenschaft gut erkennbar ist.
Für den Fall, dass die untere Leiste jedoch auch durchscheinend sein muss und ich nicht möchte, dass der Benutzer die Änderung sieht, habe ich sie wie folgt gelöst:
/* 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];
}];
Dann viewDidAppear:
kehrt ich das einfach zurück:
[UIView animateWithDuration:0.1
animations:^{
_tabBar.barTintColor = nil;
_tabBar.translucent = YES;
}];
Es gibt nur eine kleine Änderung im Erscheinungsbild, aber es ist kaum wahrnehmbar und viel besser als der Schatten unter der Navigationsleiste.
Hoffe, es wird anderen helfen, Balken durchscheinend zu halten, bis Apple dieses Verhalten behebt, da Balken in einigen Fällen ausgeblendet werden sollen, anders als es in anderen Posts speziell für die vorgeschlagen wurde UITabBar
darkColor
Ansicht noch vorhanden ist, und verursacht dieses Problem.