UIImageView de Autolayout con tamaño de tamaño programático que no sigue las restricciones

Lo siento por la molestia, pero estoy intentando cargar perezoso varias imágenes vistas y luego networkingimensionarlas proporcionalmente al contenido en un UITableView. También estoy intentando (¿Quizás no?) Utilizar Autolayout básicamente por primera vez. Y no entiendo por qué las restricciones no funcionan en este caso. Aquí está el código que estoy usando para cambiar el tamaño de UIImageView después de haber cargado la image adecuada en él.

// Scale the image view and return it. - (UIImageView *) scaleImageViewForScreenWidth:(UIImageView *)imageView { UIImage *imgFromView = [imageView image]; CGRect newFrame = CGRectMake(0, 0, imgFromView.size.width, imgFromView.size.height); float imgFactor = newFrame.size.height / newFrame.size.width; newFrame.size.width = [[UIScreen mainScreen] bounds].size.width; newFrame.size.height = newFrame.size.width * imgFactor; [imageView setFrame:newFrame]; return imageView; } 

En cuanto a las limitaciones se refiere. Estoy intentando adjuntar una Etiqueta y UIImageView con una sombra a la parte inferior de la image principal. Aquí están las restricciones que estoy aplicando a una sombra inferior en la image. Las restricciones de sombra inferior son:

 Height Equals: 83 Align Bottom to: Background Image View LeadingSpace to: Table View Cell 

Sin embargo, no obtengo lo que quiero. ¿Algunas ideas? Siento que estoy luchando contra el autoajuste.

¡De acuerdo a lo pedido! Aquí hay algunas pautas para usar Autolayout que deberían ayudar mucho.

Lo primero es que el enfoque ideal es que usted configure las cosas en Interface Builder para que no se requiera más progtwigción. Entonces, si, por ejemplo, los límites de su vista cambian, su vista se ajustará automáticamente según sea necesario.

Si eso no funciona, es posible que deba actualizar las restricciones mediante progtwigción. Ahora, las reglas de oro como mencioné es que actualizas las restricciones. ¡Resista la tentación de actualizar el marco UIView subyacente!

Entonces, harás algo como:

 _myWidthConstraint.constant = 300.f; 

Lo siguiente que debes tener en count es que deberías hacer esto en un lugar específico, y eso está en tu método de subclass updateConstraints :

 - (void)updateConstraints { [super updateConstraints]; _myWidthConstraint.constant = 300.f; } 

¿Cómo activas eso? Invocando:

  [self setNeedsUpdateConstraints]; 

¡Espero que esto ayude! Para get más información, consulte el excelente artículo de Ole Begemnn, 10 cosas que necesita saber sobre Cocoa Autolayout .

No olvides los videos de WWDC. ¡Estos son esenciales!

Además, ahora hay un libro iOS Diseño automático desmitificado . Aunque lo he comprado, aún no he tenido oportunidad de leerlo. Sin embargo, se ve muy bien.

También estaba enfrentando el mismo problema. la image dentro de la vista de image era demasiado grande para la vista de image y el modo de contentMode se configuró en AspectFill .

Resolví esto desmarcando 'Autoresize Subviews'. introduzca la descripción de la imagen aquí