UIViewController root UIView是否自动调整大小?

时间:2011-01-12 12:23:44

标签: iphone objective-c cocoa-touch

以前以编程方式设置控制器时,我总是设置根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等)需要定位和调整大小,我只想确保理解我目前看到的行为。

2 个答案:

答案 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