24

我有一个实现UITabbarViewController的视图控制器,我想隐藏标签栏并自己覆盖它,

self.tabBar.hidden = YES;

标签栏消失了,但视图底部有一个空白区域(蓝色区域)。我不想要空白区域,我该如何解决?谢谢你。

编辑:蓝色区域是:

self.view.backgroundColor = [UIColor blueColor];
4

4 回答 4

66

我们在我们的应用程序中做了完全相同的事情。要隐藏默认的 TabBar,只需覆盖hidesBottomBarWhenPushed父视图控制器(或应用程序中的每个视图控制器)中的方法

#pragma mark - Overriden UIViewController methods
- (BOOL)hidesBottomBarWhenPushed {
    return YES;
}

编辑:这个值也可以从情节提要中设置:

在此处输入图像描述

于 2013-03-08T15:07:21.090 回答
2

MyUITabBarController位于容器视图中。检查“在推送时隐藏底部栏”对我不起作用。相反,我创建了标签栏控制器的子类并以编程方式隐藏了标签栏。

class FooTabBar: UITabBarController {
  override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    self.tabBar.isHidden = true
  }
}
于 2017-07-24T22:33:36.063 回答
1

我认为没有一种简单的方法可以解决此问题,因为UITabbarViewController可能是您的超级视图和所有“内部”视图的 height = screenHeight - tabBarHeight - navBarHeight

也许您可以尝试手动调整内部视图控制器的大小,但我认为您可能在 Apple 的 AppStore 提交过程中遇到问题,因为我认为这违反了一般的 iOS 用户体验。

于 2013-03-08T14:27:59.007 回答
1

这就是您UIViewController在 Swift 中执行覆盖 () 的方式:

override var hidesBottomBarWhenPushed: Bool {
    get { return true }
    set { super.hidesBottomBarWhenPushed = newValue }
}
于 2015-08-28T10:20:41.197 回答