Another easy way to do this is to place your UIImageView
within a UIScrollView
. As I describe here, you need to set the scroll view's contentSize to be the same as your UIImageView's
size. Set your controller instance to be the delegate of the scroll view and implement the viewForZoomingInScrollView:
and scrollViewDidEndZooming:withView:atScale:
methods to allow for pinch-zooming and image panning. This is effectively what Ben's solution does, only in a slightly more lightweight manner, as you don't have the overhead of a full web view.
One issue you may run into is that the scaling within the scroll view comes in the form of transforms applied to the image. This may lead to blurriness at high zoom factors. For something that can be redrawn, you can follow my suggestions here to provide a crisper display after the pinch gesture is finished. hniels' solution could be used at that point to rescale your image.