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.
Je ne fais référence à aucune vue que je crée, mais à la vue de niveau supérieur pour chaque UIViewController. – Sethmr
@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à –
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