计算UITabBar的高度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算UITabBar的高度相关的知识,希望对你有一定的参考价值。

我正在编写一个使用UITabBar作为导航部分的应用程序。我也使用UIScrollView来呈现比屏幕通常可以处理的更多信息。因此,我需要设置滚动视图以考虑UITabBar的高度,以便显示所有信息。

有没有办法计算heightUITabBar

答案

它是320 x 49。

如果你想测试,打开Interface Builder,添加一个UITabBar,进入标尺,你会看到它

UITabBar is inherited from UIVIew所以你可以使用frame.size.height来获得高度

另一答案

如果视图控制器具有作为标签栏控制器的祖先,则可以从该标签栏检索高度。

CGFloat tabBarHeight = self.tabBarController.tabBar.frame.size.height;
另一答案

我希望做一些类似的事情,在ViewController视图的VISIBLE部分中居中标签。这个ViewController属于UITabBarController。

这是我用来标记我的标签的代码:

UILabel *roomLabel = [[UILabel alloc] init];
CGRect frame = [[self view] bounds];
float tabBarHeight = [[[super tabBarController] tabBar] frame].size.height;
frame.size.height -= tabBarHeight;
[roomLabel setFrame:frame];
[[self view] addSubview:roomLabel];
[roomLabel release];

请注意,我使用[[自我视图]边界]而不是[[自我视图]框架],因为后者包括20像素顶部条作为Y偏移(抛出垂直居中)。

希望这有助于某人!

顺便说一句:我使用的是ios 4.3和XCode 4,TabBar的高度“硬编码”值对我来说仍然是49!

另一答案

Swift 3+

let tabBarHeight = tabBarController?.tabBar.frame.size.height
print(tabBarHeight ?? "not defined")

它应该打印49.0(CGFloat类型)

另一答案

在Swift中:

let height = self.tabBarController?.tabBar.frame.height ?? 49.0

依靠标签栏的实际高度,并使用幻数作为后备。

另一答案

我知道这不太理想,但我真的不想在任何地方都有一个神奇的数字。我做的是创建一个一次性UITabBarController,并从那里获得高度。

我这样做也是因为[UITabBar initWithFrame:]按照需要工作,但是[bar setFrame:]没有。我需要框架在创建时是正确的。

UITabBarController *dtbc = [[[UITabBarController alloc] init] autorelease];

CGRect tabRect = [[[self navigationController] view] frame];
tabRect.origin.y = tabRect.size.height - [[dtbc tabBar] frame].size.height;
tabRect.size.height = [[dtbc tabBar] frame].size.height;

tabBar_ = [[UITabBar alloc] initWithFrame:tabRect];

我喜欢这个是它会正确地将标签栏放在父母的底部,而不管父母的大小。

另一答案

在大多数情况下,这应该适用于任何UIViewController实例:

bottomLayoutGuide.length
另一答案

这就是我在swift 4.1中使用它的方法

让tabBarHeight = CGFloat((self.tabBarController?.tabBar.frame.size.height)!)

以上是关于计算UITabBar的高度的主要内容,如果未能解决你的问题,请参考以下文章

iOS 13:调整 UITabBar 高度不起作用 [重复]

iOS 5 中的 UITabBar 高度

更改 UITabBar 高度

Objective-C中带有圆角和自定义高度的UITabbar

iOS 8、iOS 9、iOS 10 和 iOS 11 上的 UITabBar 的高度是多少?

swift UITabBar在Swift中具有自定义高度