Restricción "Ancho es igual a alto" en Interface Builder

93

No puedo encontrar una manera de crear una restricción 'cuadrada', lo que significa que 'ancho es igual a alto' en Interface Builder. Supongo que es posible agregar tal restricción mediante programación. ¿Hay algo que pueda hacer en IB? ¿Quizás simplemente no lo veo? Parece trivial, pero no puedo encontrarlo.

DemoniacDeath
fuente
Recuerdo a Peter Ammon hablando sobre "Confíe en Interface Builder tanto como sea posible" en WWDC'12. Que irónico.
DemoniacDeath
4
Sí, creo que todavía faltan algunas cosas en la implementación de restricciones de diseño. Parece que nos han dado acceso a la mayoría de los parámetros, pero no al multiplicador, que sería útil para muchas cosas.
rdelmar
¡Pero es cada vez mejor! Me refiero a que el diseño automático se introdujo hace menos de 3 años y, desde mi punto de vista, el soporte es realmente bueno hoy en día.
Lukas Kubanek

Respuestas:

187

Actualizar Xcode 5.1b5

ancho es igual a alto

Ctrl + clic y arrastre desde una vista y suelte mientras el puntero está sobre la vista. Seleccione "Relación de aspecto". Creará una restricción donde el primer y segundo elemento es la vista.


Antes de Xcode 5.1

No puede porque el editor de ancho / alto carece de campos para relacionarse con otra propiedad o establecer la proporción:

restricción de ancho

Por lo tanto, no puede expresar el siguiente código en 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];
Jano
fuente
1
Gracias por la última actualización. Xcode 5.1 beta 5 en realidad le permite establecer restricciones de relación de aspecto en IB, pero cuando intento compilar el proyecto, aparece el siguiente error: Restricciones de relación de aspecto con versiones de Xcode anteriores a 5.1 . Entonces, tal vez tengamos que esperar a la versión 5.1 final. ¿Lo mismo para ti, @Jano?
Lukas Kubanek
Sí, los cambios en los XIB no son compatibles con versiones anteriores. Si edita con 5.1, no puede volver a versiones inferiores.
Jano
Entonces, ¿puede compilar el xib? No funciona incluso con Xcode 5.1 beta 5 para mí.
Lukas Kubanek
1
@ onmyway133 crea una restricción entre las dos vistas y establece el multiplicador en 1: 2.
Jano
3
En Xcode 7, presione Ctrl + clic y arrastre desde la vista y suelte encima de sí mismo, y seleccione Relación de aspecto
inorganik
2

Agregue una nueva restricción, relación de aspecto a 1: 1 en el elemento de la interfaz de usuario como en la imagen.

Establecer la relación de aspecto en 1: 1

usuario550088
fuente
0

Para comenzar, arrastre el control en diagonal desde el botón hacia sí mismo. Aparecerá un menú contextual, donde puede agregar restricciones de ancho y alto. Mayús + clic en cada uno; aparecerá una marca de verificación que indica que ha agregado la restricción. (Si descarta accidentalmente el cuadro de diálogo antes de agregar ambos, está bien, simplemente repita el paso de arrastre y configure el otro):

ingrese la descripción de la imagen aquí

Cuando se agregan por primera vez, estas restricciones adoptan el ancho y la altura actuales del botón, por lo que deberá ajustar cada restricción para darle un valor más apropiado. Tendremos que hacer esto uno a la vez, aunque nuestra imagen es cuadrada, así que asegúrese de usar el mismo valor constante en ambas restricciones para cambiar el tamaño del botón proporcionalmente. Haga doble clic en la restricción e ingrese un valor menor en su campo constante:

ingrese la descripción de la imagen aquí

Mohamed AbdelraZek
fuente