Iphone 如何在UITabBarController中获得可用边界

Iphone 如何在UITabBarController中获得可用边界,iphone,user-interface,Iphone,User Interface,使用UITabBarController时,如何获得底部选项卡栏的大小?类似地,如何知道选项卡视图中有多少空间容纳内容?我看到很多人将选项卡子视图调整为[[UIScreen mainScreen]applicationFrame]的例子,这是不正确的,因为选项卡栏在屏幕底部占据了一些空间 此外,是否可以修改选项卡栏的大小 谢谢 Ryan如果您能找到如何调整UITabBar的大小,那么您可以调整UITabBar控制器的UITabBar的大小。您可以通过以下方式访问对象: [[UITabBarCon

使用UITabBarController时,如何获得底部选项卡栏的大小?类似地,如何知道选项卡视图中有多少空间容纳内容?我看到很多人将选项卡子视图调整为[[UIScreen mainScreen]applicationFrame]的例子,这是不正确的,因为选项卡栏在屏幕底部占据了一些空间

此外,是否可以修改选项卡栏的大小

谢谢
Ryan

如果您能找到如何调整UITabBar的大小,那么您可以调整UITabBar控制器的UITabBar的大小。您可以通过以下方式访问对象:

[[UITabBarController subviews] objectAtIndex:0]

但是文档中建议您不要直接访问对象。

可以使用applicationFrame的原因是UITabBarController会调整其子用户视图的大小,因此只要您的视图支持正确调整大小,就可以解决所有问题

通过访问选项卡栏控制器的选项卡栏属性并查看其框架,可以获得选项卡栏的大小。通过查看选项卡栏控制器的“视图”属性的帧,可以找到选项卡栏的总大小加上视图的区域,因此稍微减去一点即可得到所要查找的数字:

CGFloat myViewHeight = tabBarController.view  .size.height
                     - tabBarController.tabBar.size.height;

老问题,但无论如何:

如果不从NIB加载视图,请在loadView func中设置自动调整大小标志;大概是这样的:

self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight |
                             UIViewAutoresizingFlexibleWidth;
如果这样做,您可以使用[[UIScreen mainScreen]applicationFrame]指定视图的框架;如果存在选项卡栏,它将自动调整大小

如果视图有NIB,则Interface Builder会自动设置autoresizingMask


Markus

您使用的sdk版本是什么?我正在使用2.2.1,无法访问tabBar属性。大小不是的属性tabBar@ChrisP你完全正确--你需要的是
.frame.size
,而不是
.size
。很抱歉,只是一个小小的补充。不使用[[UIScreen mainScreen]applicationFrame],您可以用任何您喜欢的东西初始化根视图,例如self.view=[[UIView alloc]initWithFrame:CGRectMake(0,0,100,100)];由于调整了大小,您只需正确设置自动重新定位任务。谢谢,这正是我所需要的!我的代码是
UITableView*table=[[UITableView alloc]initWIthFrame:self.view.bounds样式:UITableView样式plain];table.autoresizingMask=UIViewAutoResizingFlexibleHight | UIViewAutoresizingFlexibleWidth在UIViewController的子类中,viewDidLoad方法。不过,
initWithFrame:self.view.bounds
是无用的,我只是将其设置为“初始大小”(立即调整/替换)。Markus的解决方案还支持旋转自动调整大小+1.