当推送另一个隐藏了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时发生。 我该如何解决这个问题?
答案 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)
当nextScreen
是UITableViewController
子类&amp;应用自动布局。但是,当nextScreen为UIViewController
时,它无法正常工作。我发现它取决于nextScreen
自动布局约束。
所以我刚用这段代码更新了我的currentScreen -
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
self.tabBarController?.tabBar.hidden = true
}
答案 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];