ggnoredo
ggnoredo

Reputation: 821

Can't zoom UIImage in a Scroll View

I'm trying to let users zoom my image in a structure like;

ViewController -->Scroll View ----->UIImage

i can scroll my page but can't zoom in or out. I think i'm missing something here. Thank you....

and here is my code:

import UIKit
import Parse
import ParseUI

class ViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet weak var image: UIImageView!

    @IBOutlet weak var label: UILabel!

    @IBOutlet weak var scrollView: UIScrollView!

    var currentObject : PFObject?

    override func viewDidLoad() {
        super.viewDidLoad()

        self.scrollView.maximumZoomScale = 5.0
        self.scrollView.minimumZoomScale = 0.5
        self.scrollView.delegate = self
        self.scrollView.addSubview(image)

        func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
            return image
        }
            if let object = currentObject {

            if let imageName = object["file"] as? PFFile {
                imageName.getDataInBackgroundWithBlock({
                    (result, error) in
                    self.image.image = UIImage(data: result!)
                })
            }
            label.text = object["fileName"] as? String
        }
            }

        override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

Upvotes: 1

Views: 428

Answers (1)

Dharmesh Kheni
Dharmesh Kheni

Reputation: 71854

Just move your viewForZoomingInScrollView method outside from viewDidLoad.

And your code will be:

import UIKit
import Parse
import ParseUI

class ViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet weak var image: UIImageView!

    @IBOutlet weak var label: UILabel!

    @IBOutlet weak var scrollView: UIScrollView!

    var currentObject : PFObject?

    override func viewDidLoad() {
        super.viewDidLoad()

        self.scrollView.maximumZoomScale = 5.0
        self.scrollView.minimumZoomScale = 0.5
        self.scrollView.delegate = self
        self.scrollView.addSubview(image)

        if let object = currentObject {

            if let imageName = object["file"] as? PFFile {
                imageName.getDataInBackgroundWithBlock({
                    (result, error) in
                    self.image.image = UIImage(data: result!)
                })
            }
            label.text = object["fileName"] as? String
        }
    }

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

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

Hope it helps.

Upvotes: 4

Related Questions