【发布时间】:2012-10-03 20:31:30
【问题描述】:
我的容器UIViewController 将在其视图层次结构中添加另一个CustomViewController 的视图。它首先创建控制器,然后调整其视图的大小,最后将其添加到其视图中。
//create the controller
customController = [[CustomViewController alloc] initWithNibName:nil bundle:nil];
[customController willMoveToParentViewController:self];
[self addChildViewController:customController];
[customController didMoveToParentViewController:self];
//size and position the controller's view
customController.view.frame = CGRectMake(10, 10, 100, 50);
//add the new controller's view
[self.view addSubview:customController.view];
[customController didMoveToParentViewController:self];
调整大小的部分是我的问题。
CustomViewController 以编程方式在loadView 中创建其视图,其中添加了许多子视图。由于 CustomViewController 并不真正知道它的视图最终将如何调整大小/定位,因此它仅使用 init 进行初始化(未提供框架)。
这对于简单的 UIView 来说效果很好,但是一旦我添加了子视图,我就会遇到问题。将这些子视图放在“loadView”中不会真正起作用,因为框架是 CGRectZero。此外,一旦我设置了自动调整大小的蒙版以确保它正确缩放,最终结果是所有子视图都增长到占据整个视图。可能是因为子视图的坐标都是100%的视图框架(因为视图的框架是CGRectZero)。
简而言之,我应该在loadView 中使用什么尺寸的框架?我是否应该假设我期望视图占据的典型视图大小?还是有更好的方法允许我添加子视图但推迟控制器视图的大小?
【问题讨论】:
标签: iphone objective-c ios cocoa-touch ios6