iOS7 странная анимация при использовании hidesBottomBarWhenPushed

Я получаю действительно странное поведение анимации при нажатии другого контроллера вида, который имеет нижнюю панель, скрытую с hidesBottomBarWhenPushed. Первая нить, которую я нашел, была:странная анимация на iOS 7 при использовании hidesBottomBarWhenPushed в приложении встроенный таргетинг но поскольку мое приложение только строится и запускается на iOS7, это не относится к моей проблеме.

пожалуйста, смотрите следующее видео, которое показывает проблему (посмотрите в правом верхнем углу угол):

https://dl.dropboxusercontent.com/u/66066789/ios7.mov

эта странная тень анимации возникает только тогда, когда hidesBottomBarWhenPushed истинно. Как я могу это исправить?

6 ответов


решена моя проблема:

self.tabBarController.tabBar.hidden=YES;

во втором контроллере вида-это путь.


Лео Натан прав. Причина этого эффекта размытия заключается в том, что весь контроллер панели вкладок анимируется под навигационным контроллером, а за этим представлением по умолчанию находится Черное 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


выключить Translucent собственность Navigation Bar в раскадровке.


элегантный способ сделать это, сохраняя прозрачность, добавляем к корню 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];