ios - sobre - Restricción de diseño automático: ¿Cómo hacer una vista mantiene su relación ancho/alto cuando se cambia el tamaño?
investigacion sobre youtube pdf (3)
En el constructor de interfaces podemos anotar la altura, el ancho del pin, hacer dos vistas de ancho por igual, pero ¿cómo puedo establecer las restricciones para que cuando se cambie el tamaño de una vista, mantenga su relación ancho / alto?
En mi caso particular, tengo un UIImageView en mi controlador de vista. Cuando la vista cambia de tamaño, me gustaría cambiar el tamaño de la vista de mi imagen, pero mantener una relación de ancho: alto de 3: 2. ¿Es posible hacerlo en IB? ¿Es posible hacerlo con código?
¡Gracias!
Esta guía de Apple realmente me ayudó: describe dos enfoques, uno en el que desactivas AutoLayout para ciertas subvistas y marcos establecidos directamente, y otro donde usas AutoLayout puro a través del código.
https://developer.apple.com/library/ios/technotes/tn2154/_index.html
No creo que puedas hacer eso en IB, pero en código, se puede hacer así (iv es mi salida a la vista de imagen):
[self.iv removeConstraints:self.iv.constraints];
NSLayoutConstraint *con1 = [NSLayoutConstraint constraintWithItem:self.iv attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:100];
NSLayoutConstraint *con2 = [NSLayoutConstraint constraintWithItem:self.iv attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.iv attribute:NSLayoutAttributeWidth multiplier:.66 constant:0];
[self.iv addConstraints:@[con1,con2]];
Esto establece explícitamente la altura a 100, y la relación ancho a altura a 3: 2.
Puede agregar una restricción de relación de aspecto en IB al arrastrar el control de la vista a sí mismo y elegir la relación de aspecto.