UIImageView pinch zoom swift UIImageView pinch zoom swift swift swift

UIImageView pinch zoom swift


UIImageView pinch zoom with UIScrollView || image zooming ios in swift 3 and Xcode 8 letter Youtube video URL

set uiscrollview Delegate in storyboardenter image description here

 class PhotoDetailViewController: UIViewController, UIScrollViewDelegate {    @IBOutlet weak var scrollView: UIScrollView!    @IBOutlet weak var imgPhoto: UIImageView!          override func viewDidLoad() {                super.viewDidLoad()            scrollView.minimumZoomScale = 1.0        scrollView.maximumZoomScale = 6.0                // scrollView.delegate = self - it is set on the storyboard.    }              func viewForZooming(in scrollView: UIScrollView) -> UIView? {               return imgPhoto    }


I decided to add the imageView to a UIScrollView. It allows the user to zoom and pan over. Here is the code I used.

in order to set max/min zoom I used :

    scrollImg.minimumZoomScale = 1.0    scrollImg.maximumZoomScale = 10.0

here is the rest of the code.

    var vWidth = self.view.frame.width    var vHeight = self.view.frame.height    var scrollImg: UIScrollView = UIScrollView()    scrollImg.delegate = self    scrollImg.frame = CGRectMake(0, 0, vWidth!, vHeight!)    scrollImg.backgroundColor = UIColor(red: 90, green: 90, blue: 90, alpha: 0.90)    scrollImg.alwaysBounceVertical = false    scrollImg.alwaysBounceHorizontal = false    scrollImg.showsVerticalScrollIndicator = true    scrollImg.flashScrollIndicators()    scrollImg.minimumZoomScale = 1.0    scrollImg.maximumZoomScale = 10.0    defaultView!.addSubview(scrollImg)    imageView!.layer.cornerRadius = 11.0    imageView!.clipsToBounds = false    scrollImg.addSubview(imageView!)

I also had to add this as well

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {    return self.imageView}

Swift 3 & above function prototype

func viewForZooming(in scrollView: UIScrollView) -> UIView? {    return self.mainImage}


Supporting Swift 5.1, You can create an extension of UIImageView, like this:

extension UIImageView {  func enableZoom() {    let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(startZooming(_:)))    isUserInteractionEnabled = true    addGestureRecognizer(pinchGesture)  }  @objc  private func startZooming(_ sender: UIPinchGestureRecognizer) {    let scaleResult = sender.view?.transform.scaledBy(x: sender.scale, y: sender.scale)    guard let scale = scaleResult, scale.a > 1, scale.d > 1 else { return }    sender.view?.transform = scale    sender.scale = 1  }}