95 votes

Contrainte "Largeur égale hauteur" dans Interface Builder

Je n'arrive pas à trouver un moyen de créer une contrainte "carrée", c'est-à-dire "largeur égale hauteur", dans Interface Builder. Je suppose qu'il est possible d'ajouter une telle contrainte de manière programmatique. Y a-t-il quelque chose que je puisse faire dans IB ? Peut-être que je ne le vois pas ? Cela semble trivial, mais je n'arrive pas à le trouver.

190voto

Jano Points 37593

Mise à jour de Xcode 5.1b5

width equals height

Ctrl+clic et glisser à partir d'une vue et relâcher pendant que le pointeur est sur la vue. Sélectionnez "Aspect Ratio". Cela créera une contrainte où le premier et le deuxième élément sont la vue.


Avant Xcode 5.1

Vous ne pouvez pas le faire car l'éditeur de largeur/hauteur ne dispose pas des champs permettant d'établir une relation avec une autre propriété ou de définir le rapport :

width constraint

Par conséquent, vous ne pouvez pas exprimer le code suivant dans Interface Builder :

CGFloat ratio = 1.0;
NSLayoutConstraint *constraint = [NSLayoutConstraint
    constraintWithItem:myView
    attribute:NSLayoutAttributeWidth
    relatedBy:NSLayoutRelationEqual
    toItem:myView
    attribute:NSLayoutAttributeHeight
    multiplier:ratio
    constant:0];
constraint.priority = 1000;
[myView.superview addConstraint:constraint];

3voto

user550088 Points 176

Veuillez ajouter une nouvelle contrainte, le rapport d'aspect à 1:1 sur l'élément UI comme dans l'image.

Set Aspect ratio to 1:1

0voto

Pour commencer, faites glisser le contrôle en diagonale du bouton vers lui-même. Un menu contextuel apparaît, dans lequel vous pouvez ajouter des contraintes de largeur et de hauteur. Shift+Cliquez sur chacune d'elles ; une coche apparaîtra pour indiquer que vous avez ajouté la contrainte. (Si vous quittez accidentellement la boîte de dialogue avant d'avoir ajouté les deux, ce n'est pas grave, il suffit de répéter l'étape du glisser-déposer et de définir l'autre) :

enter image description here

Lorsqu'elles sont ajoutées pour la première fois, ces contraintes prennent la largeur et la hauteur actuelles du bouton. Vous devrez donc ajuster chaque contrainte pour lui donner une valeur plus appropriée. Nous devrons le faire une par une, bien que notre image soit carrée. Veillez donc à utiliser la même valeur constante dans les deux contraintes pour redimensionner le bouton de manière proportionnelle. Double-cliquez sur la contrainte et saisissez une valeur plus petite dans son champ constant :

enter image description here

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