在iPad应用中隐藏UITabBar

6
这个问题被问了很多次,也有很多答案,但我找不到一个能回答下列问题的答案:
我有一个UITabBarController,
我想隐藏标签栏,所以我调用:
self.tabBarController.tabBar.hidden = YES

这会移除标签栏,但现在标签栏原来所在的位置会出现一个空黑框。我尝试调整当前呈现的 ViewController 的框架大小,但它总是落后于留下的黑盒子后面。
我还循环遍历了所有的子视图并隐藏它们,但没有运气。
最后,我尝试调整选项卡栏的框架大小,但也没用。
有人做过这方面的工作吗?
此外: 隐藏底部栏的方法 “hidesBottomBarWhenPushed” 不起作用,因为该应用程序不基于 UINavigationViewController,而是基于 UITabBarController。
这是一个 iPad 应用程序。
2个回答

8

我有同样的问题。以下是我隐藏选项卡栏的方法:

[self.tabBar removeFromSuperview];
    UIView *contentView;
    if ([[self.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]]) {
        contentView = [self.view.subviews objectAtIndex:1];
    } else {
        contentView = [self.view.subviews objectAtIndex:0];
    }
contentView.frame = self.view.bounds;

这是从tabBarController中调用的(我已将其子类化),但它确实会移除tabBar并调整视图大小以消除您现在看到的黑色条。如果您没有子类化的tabBarController,我相信您只需要将所有self的实例更改为self.tabBarController,它应该可以正常工作。
希望这可以帮助到您。

你是在什么时候尝试隐藏UITabBarController?当一个视图控制器被推送时吗? - Luke Fletcher
做到了。我没有将选项卡栏从超级视图中移除,而是将其设置为隐藏状态,这很有效。谢谢!! - Buyin Brian
这是一个很棒的解决方案。特别是如果你已经子类化了UITabBarController。谢谢@slev。 - JaeGeeTee

0

这不是一个十分优雅的解决方案,但你可以调整UITabBarController视图的高度,使其超出屏幕底部的边缘?


我尝试了那个方法,但当应用程序方向改变时遇到了问题。 - Buyin Brian
方向变化的问题出在哪里?此外,是否可以影响视图的 Z 轴顺序,即在隐藏选项卡栏后将其放到后面? - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接