Кажется, это происходит с любой полупрозрачной панелью (TabBar или ToolBar).
Итак, один из способов исправить это - установить _tabBar.translucent = NO;
(в моем случае). Это предотвращает нежелательную тень под верхней панелью навигации, оставляя панель навигации полупрозрачной. К сожалению, нижняя полоса больше не полупрозрачна.
Его можно снова сделать полупрозрачным, но все это должно произойти после завершения всей анимации нажатия, поэтому переключение этого свойства хорошо заметно.
Однако в случае, если нижняя панель также должна быть полупрозрачной, и я не хочу, чтобы пользователь видел изменение, я решил это следующим образом:
[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];
}];
Затем viewDidAppear:
я просто возвращаю это обратно:
[UIView animateWithDuration:0.1
animations:^{
_tabBar.barTintColor = nil;
_tabBar.translucent = YES;
}];
Во внешнем виде есть небольшое изменение, но оно едва заметно, и это лучше, чем тень под панелью навигации.
Надеюсь, что это поможет другим сохранить полупрозрачность полос, пока Apple не исправит это поведение, поскольку в некоторых случаях полосы ПРЕДНАЗНАЧЕНЫ для скрытия, в отличие от того, что предлагалось в других сообщениях, особенно для UITabBar
darkColor
представление все еще существует, и вызывает эту проблему.