Wydaje się, że dzieje się tak z każdym paskiem (TabBar lub ToolBar), który jest półprzezroczysty.
Tak więc jednym ze sposobów rozwiązania tego problemu jest ustawienie _tabBar.translucent = NO;
(w moim przypadku). Zapobiega to niepożądanemu cieniu pod górnym paskiem nawigacji, pozostawiając półprzezroczysty pasek nawigacji. Niestety dolny pasek nie jest już przezroczysty.
Można ją ustawić z powrotem na półprzezroczystą, ale wszystko to musi nastąpić po zakończeniu całej animacji wypychania, więc przełączanie tej właściwości jest dobrze zauważalne.
W przypadku jednak, gdy dolny pasek również musi być półprzezroczysty i nie chcę, aby użytkownik widział zmianę, rozwiązałem to w następujący sposób:
[UIView animateWithDuration:0.1
animations:^{
_tabBar.barTintColor = [UIColor colorWithWhite:0.97254901960784 alpha:1.0];
_tabBar.translucent = NO;
} completion:^(BOOL finished) {
[self.navigationController pushViewController:controller animated:YES];
}];
Następnie w viewDidAppear:
I po prostu cofam to z powrotem:
[UIView animateWithDuration:0.1
animations:^{
_tabBar.barTintColor = nil;
_tabBar.translucent = YES;
}];
Występuje tylko niewielka zmiana w wyglądzie, ale jest ledwo zauważalna i jest o wiele lepsza niż posiadanie cienia pod paskiem nawigacji.
Mam nadzieję, że pomoże to innym zachować półprzezroczyste paski, dopóki Apple nie naprawi tego zachowania, ponieważ paski SĄ przeznaczone do ukrywania w niektórych przypadkach, w przeciwieństwie do sugerowanych w innych postach, szczególnie dla UITabBar
darkColor
widok wciąż tam jest i powoduje ten problem.