计算UITabBar的高度

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

有没有办法来计算UITabBarheight

它是320 x 49。

如果你想testing,打开界面生成器,添加一个UITabBar,进入标尺,你会看到它

UITabBar是从UIVIewinheritance的,所以你可以使用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!

我知道这是不理想的,但我真的不想在任何地方有一个神奇的数字。 我所做的是创build一个一扔的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]; 

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

Swift 3+

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

它应该打印49.0(Type CGFloat)

这应该在大多数情况下在UIViewController的任何实例上工作:

 bottomLayoutGuide.length 

在Swift中:

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

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