A subclass of the UIScrollView tweaked for image preview with zooming, scrolling and rotation support.
When you need to incorporate an image preview into your application, usually you start with the UIScrollView and then spend hours tweaking it to get functionality similar to the default Photos app. This control provides you out-of-the-box functionality to zoom, scroll and rotate an UIImageView attached to it.
- Pinch to zoom and scroll
- Tap to zoom
- Scale image when scroll view bounds change, e.g. after rotation
- Set appropriate content offset after rotation to make sure visible content remains the same
To run the example project, clone the repo, and run pod install
from the Example directory first.
- Tested on iOS 9.3 and higher, but should work on iOS 8.x as well
ISVImageScrollView is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'ISVImageScrollView'
ISVImageScrollView is also available via the Swift Package Manager.
ISVImageScrollView is very easy to use.
- Create a UIImageView instance and assign it an image.
- Create an ISVImageScrollView instance (either programmatically or via the Storyboard/XIB) and assign the created UIImageView object to its imageView property.
- Don't forget to set maximumZoomScale and delegate properties of the ISVImageScrollView instance.
- Finally in delegate class implement viewForZoomingInScrollView: method and return the UIImageView object created in step 1.
let image = UIImage(named: "Photo.jpg")
self.imageView = UIImageView(image: image)
self.imageScrollView.imageView = self.imageView
self.imageScrollView.maximumZoomScale = 4.0
self.imageScrollView.delegate = self
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return self.imageView
}
Yurii Kupratsevych
ISVImageScrollView is available under the MIT license. See the LICENSE file for more info.