With Auto Layout, how do I make a UIImageView’s size dynamic depending on the image?

The image view’s intrinsic size is already dependent on the size of the image. Your assumptions (and constraints are correct).

However, if you’ve set up your image view in interface builder and have not provided it with an image, then the layout system (interface builder) won’t know how big your image view is supposed to be at compile time. Your layout is ambiguous because your image view could be many sizes. This is what throws the errors.

Once you set your image view’s image property, then the image view’s intrinsic size is defined by the size of the image. If you’re setting the view at runtime, then you can do exactly what Anna mentioned and provide interface builder with a “placeholder” intrinsic size in the property inspector of the image view. This tells interface builder, “use this size for now, I’ll give you a real size later”. The placeholder constraints are ignored at runtime.

Your other option is to assign the image to the image view in interface builder directly (but I assume your images are dynamic, so this won’t work for you).

Leave a Comment