Lorsque j'ajoute une sous-vue à la vue racine de ViewController, et avec la configuration de la mise en page automatique, LeadingSpace, trailingSpace, topSpace et bottomSpace à zéro, des espaces supplémentaires apparaissent sur les côtés gauche et droit (donc si j'imprime le cadre de la sous-vue, son origine sera de 16 et sa taille sera inférieure sur 32 qui devrait être). Donc, en réalité, nous obtenons que les espaces de début et de fin ne sont pas des zéros ...
Comme vous pouvez le voir sur l'image devant l'espace - zéro, mais Origin.x = 16
Auparavant, je ne travaillais pas dur avec la mise en page automatique, alors ma question est: est-ce un bug du nouveau xCode ou une fonctionnalité?
P.S. Tous les cadres et contraintes mis à jour.
iOS 8 ajoute le concept de "marges de contenu" à UIView
. La vidéo "Quoi de neuf dans Cocoa Touch" de la WWDC 2014 traite des marges de contenu (sous le titre "Marges adaptatives") à partir d'environ 12h30.
Les marges par défaut sont de 8 points de chaque côté. Chaque extrémité d'une contrainte de mise en page peut être relative à la marge d'une vue au lieu du bord réel de la vue (utilisez Fichier> Ouvrir rapidement pour aller à la définition de NSLayoutAttribute
pour voir les possibilités).
Votre contrainte est "relative à la marge". Lorsque vous créez la contrainte avec le popover "Ajouter de nouvelles contraintes", vous pouvez choisir si elle est relative à la marge ou non:
Il est toujours par défaut relatif à la marge; vous devez désactiver la case à cocher chaque fois que vous ajoutez des contraintes si vous ne voulez pas qu'elles soient relatives à la marge.
Vous ne pouvez pas changer si une contrainte est relative à la marge dans le popover de modification rapide de votre capture d'écran. Au lieu de cela, double-cliquez sur la contrainte pour afficher son inspecteur d'attributs complet. Là, vous pouvez utiliser les menus contextuels pour sélectionner, pour chaque extrémité de la contrainte, qu'elle soit relative à la marge ou non: