Mise en page automatique des contraintes et de l'enfant-vue-contrôleur

J'ai deux contrôleurs de vue, le parent et l'enfant.

Donc dans le viewDidLoad méthode je ne les suivants:

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
//

Donc, fondamentalement, ce qui se passe est que updateViewConstraints est appelée sur ChildViewController avant de contrôleur de parent de contraintes, donc en fait self.view.frame == CGRectZero, exactement le même que j'ai spécifié dans la coutume loadView méthode dans ChildViewController.

translatesAutoresizingMaskIntoConstraints tous ensemble pour NO pour tous les points de vue.

Quelle est la bonne manière pour l'installation de contraintes dans ce cas, afin de ChildViewController les mises à jour de ses contraintes après parent?

Journal actuel de deux contrôleurs est assez frustrant, je ne comprends pas comment updateViewConstraints peut être appelée avant 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}}
Vous devez montrer que le code où vous avez réellement ajouter à vos contraintes, sinon il est difficile de dire quel est le problème.
J'ai résolu le problème et posté la réponse ci-dessous, pas sûr que c'est la solution que je cherchais, il semble erroné, mais il fonctionne. Désolé de ne pas poster le code, c'est trop de code...

OriginalL'auteur highmaintenance | 2013-07-29