Ios 如何以编程方式获取选项卡栏的高度?

Ios 如何以编程方式获取选项卡栏的高度?,ios,iphone,uikit,uitabbarcontroller,uitabbar,Ios,Iphone,Uikit,Uitabbarcontroller,Uitabbar,我发现UITabBar的高度是49px(或50px,取决于源) 因为我不喜欢在代码中使用太多硬编码值,所以我想知道是否可以通过编程方式检索选项卡栏的高度 亲切的问候, 尼尔斯R PS:我问这个问题的原因是因为我有一个视图控制器(带有包含文本字段的列表视图),它要么简单地由导航控制器(pushViewController)推送,要么显示为模态(presentModalViewController)。键盘一出现,视图的大小就减小了,但我必须考虑到,选项卡栏只有在按下视图控制器时才可见,而不是作为模式

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

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

亲切的问候,
尼尔斯R


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

我不完全理解您的p.S.,但您可以:

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

如果对象基于UIView(库中大多数可视元素都基于UIView),则可以从ivar“框架”获取大小。

uitabar
继承自
UIView
,只要您有权访问uitabar实例,就可以访问和修改uitabar的框架

CGRect myRect = myTabBar.frame;

如果要获取UITabBar控件的标准高度,可以执行以下操作:

tabBarController?.tabBar.frame.size.height
    UITabBarController *tabBarController = [UITabBarController new];
    CGFloat tabBarHeight = tabBarController.tabBar.frame.size.height;
漂亮的

CGRectGetHeight(self.tabBarController.tabBar.frame)

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

self.tabBarController!。tabBar.框架.尺寸.高度

它将返回高度的
CGFloat

在vc中检查此项

bottomLayoutGuide.length

谢谢我很高兴我自己在这段时间里找到了答案。有时我会被最愚蠢的事情缠住pSo结果如何?50还是49?我想现在是:self.tabBar控制器?.tabBar.frame.size。height@NaXir对于iPhoneX来说,情况已经不是这样了,所以这一点现在非常重要。谢谢。在xcode 8 beta版的指导下,它将其更改为“let tabBarHeight=(self.tabBarController?.tabBar.frame)!”!。高度'@kometen-注意打开的力量(即:
),它会导致不必要的碰撞。我喜欢这个答案。这是我最喜欢的答案。如果您使用的是客观C,我建议您使用此答案。不过,这是一个糟糕的答案。。您从头开始创建一个全新的UITabBarController,这是完全不必要和浪费的。如果您需要TabBar的高度,您应该获得当前TabBar的高度。Awesome还修复了iPhone X在第一次安装应用程序时出现的错误TabBar大小问题。我有一个TabbarController子类,这行代码为我提供了完整的视图框,如iOS 11中的320x480:“使用view.safeAreaLayoutGuide.bottomAnchor而不是bottomLayoutGuide.topAnchor”因此,基本上,现在应该是self.view.safeAreaInsets.bottom。