2017-07-28 1 views
0

Je crée une application avec un UITabBarController au plus haut niveau avec les contrôleurs de navigation comme enfants. Quand je passe au premier écran à partir d'un onglet, le cadre de VC.view est (0.0, 0.0, 375.0, 618.0) et puis quand je me lie à un autre VC, la trame de VC.view pour ce VC est (0.0, 0.0, 375.0 667,0). Puisque la différence est de 49, je suppose que c'est parce que la hauteur du TabBar est prise en compte la première fois mais ne l'applique pas plus bas dans la pile. J'utilise une contrainte proportionnelle basée sur ces nombres. Y at-il une option de sorte qu'il supprimera toujours la hauteur tabBar ou une option qui ne supprimera pas toujours la hauteur. Je veux juste une configuration où la hauteur de vue de chaque VC principal est égale.La hauteur de la vue principale change entre viewControllers. Comment devrais-je les garder pareils?

Placer ceci dans viewDidLoad() de tous les circuits virtuels descendants fixe mon problème:

let size = CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarController!.tabBar.frame.height) 
view.frame = CGRect(origin: .zero, size: size) 

mais cela se sent hacky à moi et préféreraient une option basculée ou réglage.

Répondre

0

Si vous utilisez des storyboards ou des xibs, assurez-vous que la contrainte pour le bas de la vue est épinglée sur view au lieu de bottom layout guide. Cela devrait parfaitement fonctionner.

enter image description here

+0

Je ne fais référence à aucune vue que je crée, mais à la vue de niveau supérieur pour chaque UIViewController. – Sethmr

+0

@Sethmr si c'est le cas, assurez-vous de mesurer la hauteur de la vue après que toutes ses sous-vues aient terminé leur présentation dans 'viewDidLayoutSubviews', mettez à jour vos contraintes là –

+0

C'est exactement là que j'ai imprimé les valeurs de frame. Je suis assez iOS Savvy .... Je ne voulais tout simplement pas pirater ensemble si quelque chose me manquait. – Sethmr

0

Connectez votre prise de vue viewcontroller et mettre à jour le cadre de la hauteur en conséquence. ou Vous pouvez ajouter subView et ajuster sa hauteur en conséquence soit en utilisant la contrainte

+0

Je peux le faire, mais n'y at-il pas une option qui peut résoudre ce problème? Je trouve qu'au niveau le plus générique, il devrait y avoir une symétrie entre les ViewControllers qui sont utilisés. Si je dois définir le cadre de la vue en fonction de la hauteur UIScreen moins la barre d'onglets, c'est plus ou moins un hack pour moi. – Sethmr