iOS7 странная анимация при использовании hidesBottomBarWhenPushed
Я получаю действительно странное поведение анимации при нажатии другого контроллера вида, который имеет нижнюю панель, скрытую с hidesBottomBarWhenPushed. Первая нить, которую я нашел, была:странная анимация на iOS 7 при использовании hidesBottomBarWhenPushed в приложении встроенный таргетинг но поскольку мое приложение только строится и запускается на iOS7, это не относится к моей проблеме.
пожалуйста, смотрите следующее видео, которое показывает проблему (посмотрите в правом верхнем углу угол):
https://dl.dropboxusercontent.com/u/66066789/ios7.mov
эта странная тень анимации возникает только тогда, когда hidesBottomBarWhenPushed истинно. Как я могу это исправить?
6 ответов
Лео Натан прав. Причина этого эффекта размытия заключается в том, что весь контроллер панели вкладок анимируется под навигационным контроллером, а за этим представлением по умолчанию находится Черное UIWindow. Я изменил цвет фона UIWindow на белый, и это исправило проблему.
hidesBottomBarWhenPushed, похоже, отлично работает с UITabBars (iOS 7/8).
в моем случае, у меня было TabBarViewController
С UINavigationController
в каждой из вкладок и столкнулся с аналогичной проблемой. Я использовал,
nextScreen.hidesBottomBarWhenPushed = true
pushViewToCentralNavigationController(nextScreen)
он отлично работает, когда nextScreen
is UITableViewController
подкласс и прикладной автоматический макет. Но он не работает нормально, когда nextScreen UIViewController
. Я обнаружил, что это зависит от nextScreen
ограничения авто макет.
поэтому я просто обновил свой currentScreen с помощью этого кода -
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
self.tabBarController?.tabBar.hidden = true
}
подробнее - https://stackoverflow.com/a/39145355/2564720
элегантный способ сделать это, сохраняя прозрачность, добавляем к корню UIViewController
:
- (void)viewWillAppear:(BOOL)animated {
[UIView animateWithDuration:0.35f animations:^{
self.tabBarController.tabBar.alpha = 1.0f;
}];
}
- (void)viewWillDisappear:(BOOL)animated {
[UIView animateWithDuration:0.35f animations:^{
self.tabBarController.tabBar.alpha = 0.0f;
}];
}
таким образом, вы получите хорошую анимацию fade-in/fade-out панели вкладок.
Что делать, если во втором контроллере вида в viewWillAppear
ставишь
[self.navigationController setToolbarHidden:YES animated:NO];