Je peux me tromper, mais à mon avis, le comportement est correct. Le topLayout valeur peut être utilisé par le conteneur de-vue-contrôleur à la disposition de son affichage des sous-vues.
La référence dit:
Pour utiliser un dessus en page sans l'aide de contraintes, procurez-vous le guide de la position par rapport au haut tenu de l'contenant de vue.
Dans le parent, par rapport à l'contenant de vue, la valeur 64.
Chez l'enfant, par rapport à l'contenant de vue (la mère), la valeur sera 0.
Dans le conteneur View Controller, vous pouvez utiliser la propriété de cette façon:
- (void) viewWillLayoutSubviews {
CGRect viewBounds = self.view.bounds;
CGFloat topBarOffset = self.topLayoutGuide.length;
for (UIView *view in [self.view subviews]){
view.frame = CGRectMake(viewBounds.origin.x, viewBounds.origin.y+topBarOffset, viewBounds.size.width, viewBounds.size.height-topBarOffset);
}
}
L'Enfant-vue-contrôleur n'a pas besoin de savoir qu'il existe un système de Navigation et une barre d'État : ses parent ont déjà jeté son sous-vues de prendre en compte.
Si je crée une nouvelle page, en fonction du projet, de les intégrer dans une manette de navigation, et d'ajouter ce code à la vue parent contrôleurs qu'il semble fonctionner correctement: