74 votes

Ajouter une contrainte d'espacement à la super vue dans Xcode 5

Je suis en train de construire une application iOS dans Xcode 5, et j'ai du mal à ajouter des contraintes de mise en page. Dans Xcode 4.x, je pouvais simplement ajouter des espaces de gauche/droite/haut/bas par rapport au conteneur (superview) à n'importe quel élément d'interface utilisateur. Maintenant, je n'ai que cette option :

ici la description de l'image

Je veux ajouter une contrainte de "bas à la superview" à ma vue de texte. On dit "espacement au voisin le plus proche", mais je ne veux pas créer une contrainte au "voisin le plus proche", j'ai quelque chose d'autre sous ma vue de texte, et je ne veux pas créer une contrainte avec ça. S'il n'y a aucun autre objet sous ma vue de texte, il ajoute une contrainte au conteneur correctement. Mais si j'essaie de modifier quelque chose, tout se dérègle : je dois déplacer toutes les vues ailleurs, puis ajouter la contrainte, puis remettre les autres vues en place. Si j'ajoute une contrainte entre la vue de texte et l'élément d'interface utilisateur (un bouton, dans ce cas), ça ne fonctionne pas (tout semble correct : le bouton a une contrainte au bas de la superview, et la vue de texte a une contrainte d'espacement vertical avec le bouton, et il n'y a pas de conflit de contraintes). Les éléments d'interface utilisateur apparaissent en dehors des limites de l'écran dans différentes orientations d'écran (3,5 pouces). Y a-t-il un bug avec l'Interface Builder, ou est-ce que je manque quelque chose ? Quelle est la "meilleure pratique" pour concevoir l'interface utilisateur avec les nouvelles contraintes de l'Interface Builder dans Xcode 5 ?

MISE À JOUR : J'ai encore plus de problèmes dans un autre projet avec la même chose. J'essaie de fixer le haut d'une vue au guide de disposition supérieur exactement en faisant un CTRL-glisser de mon contrôle là où il est dit "guide de disposition supérieur", et il essaie d'aligner le bas de mon contrôle sur le guide de disposition (d'environ -470 points) au lieu d'aligner le haut de mon contrôle, ce qui n'a aucun sens car le contrôle devrait se disposer dans des écrans de hauteur variable (par exemple, iPhone régulier et 4 pouces, et les possibles autres mises en page à l'avenir..). Voici une capture d'écran de ce qui se passe :

ici la description de l'image

Et j'obtiens ceci dans les contraintes :

ici la description de l'image

Comment puis-je faire en sorte que l'Interface Builder aligne le haut de la vue sur le guide de disposition supérieur ?

MISE À JOUR 2 : J'ai trouvé une solution de contournement. Je redimensionne d'abord la vue pour diminuer sa hauteur (afin que le haut de celle-ci ne chevauche pas ou ne soit très proche du guide de disposition supérieur) et ENSUITE je la fais glisser avec CTRL vers le guide de disposition supérieur. Ça semble fonctionner correctement. Après l'avoir connecté, je redimensionne à nouveau ma vue à la taille désirée et je sélectionne Mettre à jour les contraintes. Ça fonctionne, mais ce n'est toujours pas une solution car cela nécessite de redimensionner la vue, de connecter, de redimensionner à nouveau et de mettre à jour les contraintes.

94voto

Jarig Points 569

Pour ajouter une contrainte entre une vue et sa super vue (comme "espace inférieur vers la super vue"), vous pouvez utiliser le plan du document (la partie gauche de l'Interface Builder).

Dans le plan du document :

  1. Maintenez la touche ctrl enfoncée et faites glisser de la vue vers sa super vue (ou vice versa).
  2. Sélectionnez les contraintes que vous souhaitez ajouter (dans cet exemple "Espace inférieur vers le conteneur").

faites glisser en maintenant la touche ctrl de la vue vers sa super vue (ou vice versa)Sélectionnez les contraintes que vous souhaitez ajouter

48voto

kball Points 2499

La réponse de Jarig est bonne mais peut parfois entraîner des résultats inattendus comme noté dans les commentaires.

Une autre option consiste à sélectionner la vue enfant et à aller à :

Éditeur > Épingler > Espacement supérieur à la vue parent

ou la contrainte que vous souhaitez.

1voto

epolyakov Points 65

Semble être maintenant une contrainte de bord inférieur. Sélectionnez votre vue et sa super vue, appuyez sur "Aligner" et cochez la chose des "Bords inférieurs"

pic

0voto

AlexR Points 1439

Si vous souhaitez ajouter des contraintes de traînée ou de traction comme dans Xcode 4, veuillez faire glisser en maintenant la touche CTRL du centre de la vue à laquelle vous souhaitez ajouter la contrainte vers la gauche, la droite, le haut ou le bas. Vous serez ensuite présenté avec une fenêtre dans laquelle vous pouvez sélectionner la contrainte à ajouter (en fonction de la direction dans laquelle vous avez fait glisser en maintenant CTRL).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X