我的容器将在其视图层次结构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 来说效果很好,但是一旦我添加了子视图,我就会遇到问题。由于框架是 CGRectZero,因此将这些子视图放置在“loadView”中不会真正起作用。此外,一旦我设置了自动调整大小的蒙版以确保它正确缩放,最终结果是所有子视图都增长到占据整个视图。可能是因为子视图的坐标都是视图框架的100%(因为视图的框架是CGRectZero)。
简而言之,我应该使用什么尺寸的框架loadView
?我是否应该假设我期望视图占据的典型视图大小?还是有更好的方法允许我添加子视图但推迟控制器视图的大小?