web-dev-qa-db-fra.com

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

Je construis une application iOS dans Xcode 5 et je ne parviens pas à ajouter des contraintes de présentation. Dans Xcode 4.x, je pourrais simplement ajouter des espaces de début/fin/haut/bas au conteneur (superview) à n’importe quel élément de l’UI. Maintenant, je n'ai que cette option:

enter image description here

Je souhaite ajouter une contrainte "espace inférieur au supérieur" à ma vue de texte. Il dit "espacement au plus proche voisin", mais je ne veux pas créer de contrainte pour "plus proche voisin", j'ai autre chose sous ma vue de texte et je ne veux pas créer de contrainte avec cela. S'il n'y a pas d'autre objet sous ma vue de texte, cela ajoute correctement une contrainte au conteneur. Mais si j'essaie de changer quelque chose, tout se gâte: je dois déplacer toutes les vues ailleurs, puis ajouter la contrainte, puis ajouter, puis déplacer les autres vues vers l'arrière. Si j'ajoute une contrainte entre la vue texte et l'élément d'interface utilisateur (un bouton, dans ce cas), cela ne fonctionne pas (tout semble bien: le bouton a une contrainte au bas de la vue d'ensemble, et la vue texte a une contrainte d'espacement vertical avec le bouton, et il n'y a pas de contraintes conflictuelles). Les éléments de l'interface utilisateur apparaissent en dehors des limites de l'écran dans différentes orientations (3,5 pouces). Existe-t-il un bogue avec Interface Builder ou manque-t-il quelque chose? Lorsque je pouvais tout configurer correctement, mes contrôles semblaient toujours hors de portée lorsque je redimensionnais les écrans du générateur d'interface, mais ils s'affichaient correctement sur un simulateur/périphérique à 3,5 pouces. Quelle est la "meilleure pratique" de conception de l'interface utilisateur avec les nouvelles contraintes Interface Builder dans Xcode 5?

PDATE: J'ai des problèmes supplémentaires dans un autre projet avec la même chose. J'essaie de corriger une vue du haut vers le haut du guide de disposition en appuyant sur CTRL, en faisant glisser mon contrôle jusqu'à l'endroit où il est indiqué "top layout guide", et j'essaie d'aligner le bas de mon contrôle sur le guide de présentation (d'environ -470 points) au lieu d’aligner le haut de mon contrôle, ce qui n’a aucun sens car le contrôle doit se présenter lui-même sur des écrans à hauteur variable (par exemple, un iPhone ordinaire ou 4 pouces, et les autres dispositions possibles à l’avenir ...). Voici une capture d'écran de ce qui se passe:

enter image description here

Et je reçois ceci dans des contraintes:

enter image description here

Comment faire pour que Interface Builder aligne le haut de la vue sur le guide de disposition supérieur?

PDATE 2: J'ai trouvé une solution de contournement. Je redimensionne d'abord la vue pour en réduire la hauteur (afin que son sommet ne se chevauche pas ou ne soit pas très proche du guide de présentation supérieur) et ALORS je CTRL + déplace le curseur vers le guide de présentation supérieur. Cela semble fonctionner correctement. Une fois la connexion établie, je redimensionne ma vue à la taille souhaitée et sélectionnez Update Constraints. Cela fonctionne, mais ce n'est toujours pas une solution car cela nécessite de redimensionner la vue, de se connecter, de redimensionner à nouveau et de mettre à jour les contraintes.

74
Can Poyrazoğlu

Pour ajouter une contrainte entre une vue et son aperçu (par exemple, "espace inférieur à l'affichage supérieur"), vous pouvez utiliser la structure du document (la partie gauche du constructeur d'interface).

Dans l'aperçu du document:

  1. Maintenez la touche Ctrl enfoncée et faites glisser de la vue vers son aperçu (ou inversement).
  2. Sélectionnez les contraintes que vous souhaitez ajouter (dans cet exemple, "Espace inférieur dans le conteneur").

ctrl-drag from the view to its' superview (or vice versa)Select the constraints you want to add

94
Jarig

La réponse de Jarig est bonne mais peut parfois conduire à des résultats inattendus, comme indiqué dans les commentaires.

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

Éditeur> épinglette> espace supérieur à Superview

ou n'importe quelle contrainte que vous voulez.

48
kball

Semble être une contrainte de bord inférieur maintenant. Sélectionnez votre vue et son aperçu, appuyez sur "Aligner" et cochez la case "Bords inférieurs".

pic

1
epolyakov

Si vous souhaitez ajouter des contraintes de fin ou de début, comme dans Xcode 4, faites glisser CTRL du centre de la vue à laquelle vous souhaitez ajouter la contrainte à gauche, à droite, en haut ou en bas. Une fenêtre apparaîtra dans laquelle vous pourrez sélectionner la contrainte à ajouter (en fonction de la direction dans laquelle vous avez fait glisser CTRL).

0
AlexR