Я использую контейнерВью. В containerView много странного.
Одна из странностей заключается в том, что тип представления — это просто UIView. Итак, в чем разница между этим представлением и всеми остальными подпредставлениями?
Затем я начал настраивать вещи, прочитав кучу примеров кода.
[self.ContainerView addSubview:self.listBusinessViewController.view];// initialize'
В то время self.listBusinessViewController уже является потомком самого себя. Итак, у меня 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. Маска автоматического изменения размера равна 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). Тем не менее, весь смысл гибкой высоты и ширины заключается в том, чтобы представление заполнило его суперпредставление или его окна.
Я что-то упускаю?
self.ContainerView
не компилируется. sscce.org - person   schedule 16.10.2012ContainerView
- это имя выхода / свойства, которое указывает на представление контейнера, добавленное в xib или раскадровку. - person jrturton   schedule 16.10.2012