使用hidesBottomBarWhenPushed时iOS7奇怪的动画

时间:2014-03-19 19:19:10

标签: objective-c ios7 uiviewcontroller uitableview pushviewcontroller

当推送另一个隐藏了hidesBottomBarWhenPushed底部栏的视图控制器时,我得到一个非常奇怪的动画行为。我找到的第一个帖子是:Strange animation on iOS 7 when using hidesBottomBarWhenPushed in app built targeting <= iOS 6但由于我的应用程序只是在iOS7上构建和运行,因此我的问题不是这样。

请参阅以下显示问题的视频(请参见右上角):

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

这种奇怪的动画阴影仅在hidesBottomBarWhenPushed为true时发生。 我该如何解决这个问题?

6 个答案:

答案 0 :(得分:19)

解决了我的问题:

self.tabBarController.tabBar.hidden=YES;

在第二个视图中,控制器是可行的方法。

答案 1 :(得分:10)

Leo Natan是对的。这种模糊效果的原因是因为整个标签栏控制器在导航控制器下面被动画化,并且默认情况下该视图后面是黑色UIWindow。我将UIWindow背景颜色更改为白色并修复了问题。

hidesBottomBarWhenPushed似乎与UITabBars(iOS 7/8)配合使用。

答案 2 :(得分:2)

在我的情况下,我在每个标签中都TabBarViewController UINavigationController面临类似的问题。我用了,

nextScreen.hidesBottomBarWhenPushed = true
pushViewToCentralNavigationController(nextScreen)

nextScreenUITableViewController子类&amp;应用自动布局。但是,当nextScreen为UIViewController时,它无法正常工作。我发现它取决于nextScreen自动布局约束。

所以我刚用这段代码更新了我的currentScreen -

override func viewWillDisappear(animated: Bool) {

        super.viewWillDisappear(animated)

        self.tabBarController?.tabBar.hidden = true

    }

更多详情 - https://stackoverflow.com/a/39145355/2564720

答案 3 :(得分:1)

在Storyboard中关闭Translucent的{​​{1}}属性。

答案 4 :(得分:1)

在保持透明度的同时,这样做的一种优雅方式是将其添加到根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;
    }];
}

通过这种方式,您可以获得标签栏的漂亮淡入/淡出动画。

答案 5 :(得分:0)

如果在viewWillAppear中的第二个视图控制器中放入

,该怎么办?
[self.navigationController setToolbarHidden:YES animated:NO];