Cómo configurar la image en la parte superior para evitar el espacio en UIimageView

Tengo una UIImageView con el modo de contenido Aspecto Ajuste de tamaño 220×155. Estoy insertando dinámicamente diferentes imágenes en diferentes resoluciones, pero todas son más grandes que el tamaño de UIImageView. Como el modo de contenido está configurado en Ajuste de aspecto, la image se escala con respecto a la relación para adaptarse a UIImageView.

Mi problema es que si, por ejemplo, la image dentro del UIImageView se escala a 220×100, me gustaría que el UIImageView se networkinguzca desde una altura de 155 a 100 también para evitar el espacio entre mis elementos.

¿Cómo puedo hacer esto?

Escribí este método para get el marco de la vista de la image una vez que cargué una image. Entonces, los requisitos para mí fueron los mismos que en tu caso:

1) vista de image con el modo de contenido de ajuste de aspecto 2) obtenga el marco exacto de la image (de esta forma puede volver a colocar la vista de la image)

Espero que esto ayude:

- (CGRect) getFrameOfImage:(AsyncImageView *) imgView { if(!imgView.loaded) return CGRectZero; CGSize imgSize = imgView.image.size; CGSize frameSize = imgView.frame.size; CGRect resultFrame; if(imgSize.width < frameSize.width && imgSize.height < frameSize.height) { resultFrame.size = imgSize; } else { float widthRatio = imgSize.width / frameSize.width; float heightRatio = imgSize.height / frameSize.height; float maxRatio = MAX (widthRatio , heightRatio); NSLog(@"widthRatio = %.2f , heightRatio = %.2f , maxRatio = %.2f" , widthRatio , heightRatio , maxRatio); resultFrame.size = CGSizeMake(imgSize.width / maxRatio, imgSize.height / maxRatio); } resultFrame.origin = CGPointMake(imgView.center.x - resultFrame.size.width/2 , imgView.center.y - resultFrame.size.height/2); return resultFrame; } 

Estoy usando AsyncImageView pero funcionará igual de bien con UIImageView . Lo importante para recordar es llamar a este método DESPUÉS de que la image se cargó.

¡Aclamaciones!

Es muy simple, solo necesita get el tamaño real de la image, lo que puede hacerse mediante

 UIImage *image = [UIImage imageName:@""]; 

entonces solo necesita establecer el marco Me gusta:

 imageView.frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height); 

Espero que esto te ayude.

Una vez que la image de la image se establece en la nueva image (y, por lo tanto, se escala), puede get la altura de la image dentro de imageview (imageview.image.size.height) y establecer la altura (marco) de la image como corresponda.

Intereting Posts