Flemming Ovesen
Flemming Ovesen

Reputation: 335

Xcode Swift image zoom gesture

Hope someone can help me. Im trying to make a zoom gesture, so when the image are presented the user can zoom the image with fingers.

My code to present the image are:

// MARK: Show image full screen

func imageTapped(img: AnyObject) {

    self.navigationController?.navigationBarHidden = true

    let imageView = productImage as UIImageView

    let newImageView = UIImageView(image: imageView.image)
    newImageView.frame = self.view.frame
    newImageView.backgroundColor = .blackColor()
    newImageView.contentMode = .ScaleToFill
    newImageView.userInteractionEnabled = true

    let tap = UITapGestureRecognizer(target: self, action: "dismissFullscreenImage:")
    newImageView.addGestureRecognizer(tap)
    self.view.addSubview(newImageView)
}

func dismissFullscreenImage(sender: UITapGestureRecognizer) {
    sender.view?.removeFromSuperview()
    self.navigationController?.navigationBarHidden = false
}

Upvotes: 2

Views: 12573

Answers (2)

Yuvrajsinh Vala
Yuvrajsinh Vala

Reputation: 138

Take gesture programmatically and make its method and write down this code in the method.

pinchRecognizerOnView() is my method name. Take one view or image view inside view controller and add this new view in that.Now apply gesture method on this new view.

func pinchRecognizerOnView(sender: UIPinchGestureRecognizer!) {

    sender.view?.transform = CGAffineTransformScale((sender.view?.transform)!, sender.scale, sender.scale)

    sender.scale = 1

    // its for zoom in out screen
}

Upvotes: 1

Shrikant Tanwade
Shrikant Tanwade

Reputation: 1441

Use UIScrollView and add UIImgeView in scroll view

import UIKit

class ViewController: UIViewController,UIScrollViewDelegate
{
    var scrollV : UIScrollView!
    var imageView : UIImageView!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        self.navigationController?.navigationBarHidden = true

        scrollV=UIScrollView()
        scrollV.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)
        scrollV.minimumZoomScale=1
        scrollV.maximumZoomScale=3
        scrollV.bounces=false
        scrollV.delegate=self;
        self.view.addSubview(scrollV)

        imageView=UIImageView()
        imageView.image = UIImage(imageLiteral: "neymar.jpg")
        imageView.frame = CGRectMake(0, 0, scrollV.frame.width, scrollV.frame.height)
        imageView.backgroundColor = .blackColor()
        imageView.contentMode = .ScaleToFill
        scrollV.addSubview(imageView)
   }

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

Upvotes: 4

Related Questions