我正在使用容器视图。containerView 有很多奇怪的地方。
奇怪的事情之一是视图的类型只是 UIView。那么,这个视图和所有其他子视图有什么不同呢?
然后我在阅读了一堆示例代码后开始设置。
[self.ContainerView addSubview:self.listBusinessViewController.view];// initialize'
那个时候self.listBusinessViewController已经是self的一个child。所以自己有3个孩子。
令人惊讶的是 self.listBusinessViewController.view 的框架大小仍然是我在 xib 中设置的方式,而不是自动调整到 ContainerView 的大小。
如果我这样做:
[self.ContainerView addSubview:self.listBusinessViewController.view];// initialize'
PO(NSStringFromCGRect(self.ContainerView.frame));
PO(NSStringFromCGRect(self.listBusinessViewController.view.frame));
PD(self.listBusinessViewController.view.autoresizingMask);
PD(UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight);
我有:
NSStringFromCGRect(self.ContainerView.frame): {{0, 48}, {320, 412}}
NSStringFromCGRect(self.listBusinessViewController.view.frame): {{0, 0}, {320, 480}}
self.listBusinessViewController.view.autoresizingMask: 18
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight: 18
因此,ContainerView 的高度为 412 listBusinessViewController.view 的高度为 480 autoresizingMask 为 18,这是预期的。这意味着它具有灵活的宽度、高度和不灵活的边框。
那么为什么listBusinessViewController.view的高度没有变成412,就像它的superview一样?
当然,我可以使用霸道的方式做到这一点
CGRect frameOfAllChild = CGRectMake(0, 0, self.ContainerView.frame.size.width, self.ContainerView.frame.size.height);
for (UIViewController * child in self.childViewControllers) {
child.view.frame=frameOfAllChild;
}
编码 ubber alles(至少 ubber xib)。但是,具有灵活高度和宽度的全部意义在于视图填充它的超级视图或它的窗口。
我错过了什么吗?