【问题标题】:How to get the height of the tabbar programmatically?如何以编程方式获取标签栏的高度?
【发布时间】:2011-07-20 06:39:43
【问题描述】:

我发现 UITabBar 的高度是 49px(或 50px,取决于来源)。

因为我不喜欢在我的代码中使用太多硬编码值,所以我想知道是否可以通过编程方式检索标签栏的高度。

亲切的问候,
尼尔斯 R.

PS:我问的原因是因为我有一个视图控制器(带有包含文本字段的列表视图),它要么由导航控制器(pushViewController)简单地推送,要么作为模式呈现(presentModalViewController)。键盘一出现,视图的大小就会减小,但我必须考虑到标签栏只有在视图控制器被按下时才可见,而不是作为模态显示。

【问题讨论】:

    标签: ios iphone uikit uitabbarcontroller uitabbar


    【解决方案1】:

    我不完全理解你的 P.S.,但你可以这样做:

    tabBarController?.tabBar.frame.size.height
    

    【讨论】:

    • 谢谢。我很高兴在此期间我自己弄清楚了。有时我会陷入最愚蠢的事情。 :p
    • 那么结果如何? 50 还是 49?
    • 我想现在是:self.tabBarController?.tabBar.frame.size.height
    • @NaXir iPhone X 不再是这种情况,所以现在非常相关。
    【解决方案2】:

    在你的vc中检查这个

    bottomLayoutGuide.length
    

    【讨论】:

    • 从 iOS 11 开始:“使用 view.safeAreaLayoutGuide.bottomAnchor 而不是 bottomLayoutGuide.topAnchor”
    • 所以,现在基本上应该是self.view.safeAreaInsets.bottom
    【解决方案3】:

    Swift 3 中,您可以使用下面的代码检索UITabBar 的高度。

    self.tabBarController!.tabBar.frame.size.height

    这将返回高度的CGFloat

    【讨论】:

      【解决方案4】:

      更漂亮

      CGRectGetHeight(self.tabBarController.tabBar.frame)
      

      【讨论】:

      • 谢谢。并在 xcode 8 beta 的指导下将其更改为 'let tabBarHeight = (self.tabBarController?.tabBar.frame)!.height'
      • @kometen - 注意那里的强制解包(即:!),它可能会导致不必要的崩溃
      【解决方案5】:

      如果你想获得 UITabBar 控件的标准高度,那么你可以这样做:

          UITabBarController *tabBarController = [UITabBarController new];
          CGFloat tabBarHeight = tabBarController.tabBar.frame.size.height;
      

      【讨论】:

      • 我喜欢这个答案。这是我最喜欢的答案。如果您使用的是 Objective C,我推荐这个答案
      • 这是一个糟糕的答案。您从头开始创建一个全新的 UITabBarController,这完全没有必要且浪费。如果你需要一个 TabBar 的高度,你应该得到你当前 tabBar 的高度。
      • Awesome 还修复了 iPhone X 首次安装应用时标签栏大小错误的问题。
      【解决方案6】:

      UITabBar继承自UIView只要你可以访问你的UITabBar实例你就可以访问和修改UITabBar的框架,

      CGRect myRect = myTabBar.frame;
      

      【讨论】:

      • 我有一个 TabbarController 子类,这条线给了我全视图框架,比如 320x480
      【解决方案7】:

      如果一个对象基于 UIView(库中的大多数可视元素都是),您可以从 ivar "frame" 中获取大小。

      【讨论】:

        猜你喜欢
        • 2018-04-28
        • 2012-10-11
        • 2011-11-10
        • 2013-12-14
        • 1970-01-01
        • 1970-01-01
        • 2013-12-14
        • 2017-06-23
        • 1970-01-01
        相关资源
        最近更新 更多