Scrollable and zoomable image view for iOS in Swift
ImageScrollView
This is a control that will help you to display an image, with zoomable and scrollable features easily.
When you make an application, which has a photo viewer feature, the photo viewer usually needs to have zoomable and scrollable features, that allows your user viewing photo more details. This control will help you to display images, with zoomable and scrollable features easily.
Compatible
- iOS 9 and later.
- Swift 5.0 and later (for earlier Swift version, please use earlier ImageScrollView version).
Usage
Cocoapod
Add below line to your Podfile:
pod 'ImageScrollView'
then run below command in Terminal to install:
pod install
Note: If the above pod doesn't work, try using below pod definition in Podfile:
pod 'ImageScrollView', :git => 'https://github.com/huynguyencong/ImageScrollView.git'
Swift Package Manager
In Xcode, select menu File -> Swift Packages -> Add Package Dependency. Select a target, then add this link to the input field:
https://github.com/huynguyencong/ImageScrollView.git
Manual
Sometimes just want to install manually, just simply add the file ImageSrollView.swift
in the folder Sources
to your project.
Simple to use
Drag an UIScrollView to your storyboard, change Class and Module in Identity Inspector to ImageScrollView. Also, create an IBOutlet in your source file.
import ImageScrollView
@IBOutlet weak var imageScrollView: ImageScrollView!
// Important: This setup method should be called once, usually in your viewDidLoad() method
imageScrollView.setup()
let myImage = UIImage(named: "my_image_name")
imageScrollView.display(image: myImage)
That's all. Now try zooming and scrolling to see the result.
You can set delegate to catch event. This delegate is inheritted from UIScrollViewDelegate
.
imageScrollView.imageScrollViewDelegate = self
extension ViewController: ImageScrollViewDelegate {
func imageScrollViewDidChangeOrientation(imageScrollView: ImageScrollView) {
print("Did change orientation")
}
func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat) {
print("scrollViewDidEndZooming at scale \(scale)")
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
print("scrollViewDidScroll at offset \(scrollView.contentOffset)")
}
}
Note:
- If you have any problem about layout, image position, make sure you have called the setup() method of the ImageScrollView. Or you can try calling the method
layoutIfNeeded()
of the view controller's view:
view.layoutIfNeeded()