2009-11-23 84 views
1

我以编程方式创建视图控制器,它是UITabBarDelegate并包含UITabBar如何以编程方式定位TabBar

UITabBar *tabBar = [[UITabBar alloc] initWithFrame:CGRectMake(0, 200, 320, 49)]; 
[self.view addSubview:tabBar]; 

我真的不想硬编码的情况下,屏幕的分辨率变化框架值或我使用的观点在不同的环境有不同的高度,例如。

我隐约知道我可以创建没有这些值的标签栏,探测窗口和标签栏的高度和宽度来计算所需的值,但我努力实现这一点。我想要实现的是标准宽度和高度的标签栏,它正确地位于封闭视图的底部。

回答

0

也许是这样的:

UITabBar *tabBar = [[UITabBar alloc] init]; //init with default width and height 
tabBar.frame = CGRectMake(0, 
          self.view.frame.size.height - tabBar.frame.size.height, 
          self.view.frame.size.width, 
          tabBar.frame.size.height)]; //place it at the bottom of the view 
[self.view addSubview:tabBar]; 
[tabBar release]; 

编辑:

我已经意识到泰德是一个新实例UITabBar的大小是零。可能是你最好的选择是使用一个的UITabBarController,因为它已经相应大小的UITabBar:

UITabBarController *tabBarController = [[UITabBarController alloc] init]; 
[self.view addSubview: tabBarController.view]; 
+0

这是非常相似,我一直在尝试之前,但由于某些原因从self.view.frame返回的值.size.height或width都是(null)? – andybee 2009-11-23 20:10:37

+0

这很奇怪: - ?尝试self.view.bounds.size.width和高度 – luvieere 2009-11-23 21:04:13

+0

NSLog(@“%@”,tabBar);返回'>',但tabBar.frame或tabBar.bounds返回(空)。 self.view.frame或self.view.bounds也一样?我认为这是出乎意料的行为,所以我应该把这个问题推出一个新的问题? – andybee 2009-11-24 08:03:18

相关问题