UIImageView aspect fit and center
I have an image view, declared programmatically, and I am setting its image, also programmatically.
However, I find myself unable to set the image to both fit the aspect and align centre to the image view.
In other words, I want the image to:
- Scale down to fit the aspect, if the image is large.
- Centre but not scale up, if the image is small.
How do I get that?
Just pasting the solution:
Just like @manohar said
imageView.contentMode = UIViewContentModeCenter;
if (imageView.bounds.size.width > ((UIImage*)imagesArray[i]).size.width && imageView.bounds.size.height > ((UIImage*)imagesArray[i]).size.height) {
imageView.contentMode = UIViewContentModeScaleAspectFit;
}
solved my problem
In swift language we can set content mode of UIImage view like following as:
let newImgThumb = UIImageView(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
newImgThumb.contentMode = .scaleAspectFit
Swift
yourImageView.contentMode = .center
You can use the following options to position your image:
scaleToFill
-
scaleAspectFit
// contents scaled to fit with fixed aspect. remainder is transparent -
redraw
// redraw on bounds change (calls -setNeedsDisplay) -
center
// contents remain same size. positioned adjusted. top
bottom
left
right
topLeft
topRight
bottomLeft
bottomRight
Updated answer
When I originally answered this question in 2014, there was no requirement to not scale the image up in the case of a small image. (The question was edited in 2015.) If you have such a requirement, you will indeed need to compare the image's size to that of the imageView and use either UIViewContentModeCenter
(in the case of an image smaller than the imageView) or UIViewContentModeScaleAspectFit
in all other cases.
Original answer
Setting the imageView's contentMode to UIViewContentModeScaleAspectFit
was enough for me. It seems to center the images as well. I'm not sure why others are using logic based on the image. See also this question: iOS aspect fit and center