【问题标题】:iOS TabbarViewController hide the tab bariOS TabbarViewController 隐藏标签栏
【发布时间】:2013-02-24 02:52:19
【问题描述】:

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

self.tabBar.hidden = YES;

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

编辑:蓝色区域是:

self.view.backgroundColor = [UIColor blueColor];

【问题讨论】:

标签: ios uitabbarcontroller tabbar


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    编辑:这个值也可以从 Storyboard 中设置:

    【讨论】:

    • 如果可以的话,将它设置在故事板中。我在视图控制器中做到了,但是当按下后退按钮时,标签栏仍然隐藏。试图做反向代码并将其带回来但没有运气。
    • 我试过了,没用。既不是代码版本也不是故事板版本。我为我的应用程序中的每个视图控制器设置了它(因为不是 100% 清楚我应该将它添加到哪个视图控制器)。零效应。我的标签栏控制器嵌入在一个容器中,该容器位于一个视图控制器中,该控制器本身嵌入在另一个视图控制器的容器中。这种嵌套可能是问题的根源。我的应用中只有一个 TabBar 控制器。
    • @BillPatterson 这仅适用于嵌入在 UINavigationController 中的视图控制器。您将拥有UITabViewController -> UINavigationController -> 'MyViewController'。然后在 MyViewController 中将 hidesBottomBarWhenPushed 设置为 YES
    【解决方案3】:

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

    override var hidesBottomBarWhenPushed: Bool {
        get { return true }
        set { super.hidesBottomBarWhenPushed = newValue }
    }
    

    【讨论】:

      【解决方案4】:

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

      class FooTabBar: UITabBarController {
        override func viewDidLayoutSubviews() {
          super.viewDidLayoutSubviews()
          self.tabBar.isHidden = true
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2016-05-05
        • 1970-01-01
        • 2018-02-24
        • 1970-01-01
        • 1970-01-01
        • 2022-11-12
        • 1970-01-01
        • 2019-02-15
        • 1970-01-01
        相关资源
        最近更新 更多