以前以编程方式设置控制器时,我总是设置根UIView元素的大小和位置(即)
// UIViewController -loadView
CGRect viewFrame = CGRectMake(0, 20, 320, 460);
UIView *view = [[UIView alloc] initWithFrame:viewFrame];
[self setView:view];
[view release];
我刚刚注意到(并且我想知道是否有人可以确认)如果您将根UIView添加到控制器,您不需要在自动调整到可用空间时设置大小或位置。 (即)
// UIViewController -loadView
UIView *view = [[UIView alloc] init];
[self setView:view];
[view release];
我知道随后的UIViews(即UIButton,UILabel等)需要定位和调整大小,我只想确保理解我目前看到的行为。
答案 0 :(得分:1)
它确实调整了视图的框架。
UIView *view1 = [[UIView alloc] init];
NSLog(@"ViewFrame before set:%@",NSStringFromCGRect(view1.frame));
[self setView:view1];
NSLog(@"ViewFrame after set:%@",NSStringFromCGRect(view1.frame));
[view1 release];
但我在文档中找不到任何可以证明这一点的东西。
答案 1 :(得分:0)
任何UIViewController的根视图的大小由该控制器的父实例管理,该实例可以是另一个控制器或窗口。它会自动确定大小。例如,如果要创建UITabBarController,它将确定其所有子控制器的根视图的大小。或者,如果您编写自己的容器视图控制器,则必须确定其子控制器的根视图的大小。
请参阅本主题中的“查看管理”部分: UIViewController Class Reference