计算UITabBar的高度

Mat*_*ves 47 iphone cocoa-touch uiscrollview uikit uitabbar

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

有没有办法计算heightUITabBar

vod*_*ang 63

它是320 x 49.

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

UITabBar继承自UIVIew,因此您可以使用frame.size.height来获取高度

  • 是否保证一直保持这种状态?我宁愿使用API​​来获取值,而不是依赖于使用IB并在应用程序中插入幻数. (10认同)
  • 假设你的app委托有一个标签栏控制器变量tabBarController,可以通过((YouAppDelegate*)UIApplication.sharedApplication.delegate).tabBarController.tabBar.frame.size.height访问高度. (7认同)

Vla*_*yuk 59

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

CGFloat tabBarHeight = self.tabBarController.tabBar.frame.size.height;
Run Code Online (Sandbox Code Playgroud)


mbm*_*414 8

我希望做一些类似的事情,在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];
Run Code Online (Sandbox Code Playgroud)

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

希望这有助于某人!

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


GK1*_*100 8

在Swift中:

let height = self.tabBarController?.tabBar.frame.height ?? 49.0
Run Code Online (Sandbox Code Playgroud)

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

  • 这是错误的,因为如果 iPhone 有缺口,神奇的后备数字不是 49,而是 83 (2认同)

And*_*rey 6

Swift 3+

let tabBarHeight = tabBarController?.tabBar.frame.size.height
print(tabBarHeight ?? "not defined")
Run Code Online (Sandbox Code Playgroud)

它应该打印49.0(CGFloat类型)