我正在编写一个应用程序,其中使用 UITabBar
进行部分导航。我还使用 UIScrollView
来呈现比屏幕通常能处理的更多信息。因此,我需要设置滚动视图以考虑 UITabBar
的高度,以便显示所有信息。
有没有一种方法来计算 UITabBar
的 高度
?
我正在编写一个应用程序,其中使用 UITabBar
进行部分导航。我还使用 UIScrollView
来呈现比屏幕通常能处理的更多信息。因此,我需要设置滚动视图以考虑 UITabBar
的高度,以便显示所有信息。
有没有一种方法来计算 UITabBar
的 高度
?
如果视图控制器有一个作为选项卡栏控制器的祖先,你可以从那个选项卡栏获取高度。
CGFloat tabBarHeight = self.tabBarController.tabBar.frame.size.height;
它的尺寸为320 x 49。
如果您想要测试,请打开Interface Builder,添加一个UITabBar,进入标尺,您会看到它。
UITabBar继承自UIView因此您可以使用frame.size.height来获取高度。
在 Swift 中:
let height = self.tabBarController?.tabBar.frame.height ?? 49.0
依赖于实际的选项卡栏高度,并使用魔数作为备用方案。frame.size.height
。 - ABCDSwift 3+
let tabBarHeight = tabBarController?.tabBar.frame.size.height
print(tabBarHeight ?? "not defined")
它应该打印出49.0(CGFloat类型)
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];
这个方法在大多数情况下都适用于任何UIViewController的实例:
bottomLayoutGuide.length
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];
extension UITabBarController{
func getHeight()->CGFloat{
return self.tabBar.frame.size.height
}
func getWidth()->CGFloat{
return self.tabBar.frame.size.width
}
}
其他人也可以尝试使用选项卡栏的intrinsicContentSize属性来获取高度。
let tabBarHeight = self.tabBarController.tabBar.intrinsicContentSize.height
这是我在Swift 4.1中让它正常工作的方法。
let tabBarHeight = CGFloat((self.tabBarController?.tabBar.frame.size.height)!)