Mam dwa kontrolery widoku, nadrzędny i podrzędny.Ograniczenia trybu automatycznego i kontrolera podrzędnego
więc w metodzie viewDidLoad
I wykonaj następujące czynności:
ChildViewController* childViewController = [[ChildViewController alloc] init];
[self addChildViewController:childViewController];
// ChildViewController sets his own constraints in viewDidLoad
[self.view addSubview:childViewController.view];
[childViewController didMoveToParentViewController:self];
//
// setup constraints to expand childViewController.view to
// fill the size of parent view controller
//
Więc w zasadzie to, co się dzieje, że updateViewConstraints
nazywa na ChildViewController przed ograniczeniami regulatora rodzic stosuje, więc w rzeczywistości self.view.frame == CGRectZero
, dokładnie tak samo jak podano w niestandardowa metoda loadView
w ChildViewController
.
translatesAutoresizingMaskIntoConstraints
wszystkie ustawione na NO
dla wszystkich widoków.
Jaki jest właściwy sposób ustawiania ograniczeń w tym przypadku, aby ChildViewController
zaktualizował swoje ograniczenia po rodzicu?
Aktualny log z obu kontrolerów jest dość frustrujące, nie rozumiem jak updateViewConstraints może być wywołana przed viewWillLayoutSubviews:
App[47933:c07] ChildViewController::updateViewConstraints. RECT: {{0, 0}, {0, 0}}
App[47933:c07] ParentViewController::updateViewConstraints
App[47933:c07] ChildViewController:viewWillLayoutSubviews. RECT: {{0, 0}, {984, 454}}
App[47933:c07] ChildViewController:viewDidLayoutSubviews. RECT: {{0, 0}, {984, 454}}
Musisz pokazać kod, w którym faktycznie dodajesz swoje ograniczenia, w przeciwnym razie trudno powiedzieć, co jest nie tak. – Maarten
@Maarten Rozwiązałem problem i wysłałem odpowiedź poniżej, nie jestem pewien, czy to rozwiązanie, którego szukałem, wydaje się błędne, ale działa. Przepraszam, że nie mogę opublikować kodu, to za dużo kodu ... – Andy