5

I have an UIView and add an UIScrollView to it. Inside the scrollView is an UIImageView.
I want to zoom the image view by pressing a button. If the image view is zoomed you should be able to scroll but that's not working.

Currently I have that:

self.imageView = UIImageView()
self.imageView.image = image
self.imageView.frame = self.contentView.bounds

self.scrollView = UIScrollView()
self.scrollView.frame = self.contentView.bounds
self.scrollView.contentSize = self.contentView.bounds.size
self.scrollView.addSubview(self.imageView)

self.contentView.addSubview(self.scrollView)

and that:

@IBAction func zoomPicture() {
    if (scale <= 1.5) {
        scale = scale + 0.1
        scrollView.transform = CGAffineTransformMakeScale(scale, scale)
        scrollView.zoomScale = scale
        scrollView.maximumZoomScale = 1.5
        scrollView.minimumZoomScale = 1.0
        scrollView.contentSize = contentView.bounds.size
        scrollView.scrollEnabled = true
    }
}

my class also implements UIScrollViewDelegateand I set the delegate in the viewDidLoad() function. I have also added the viewForZoomingInScrollView function. The zoom works but I can't scroll.

mafioso
  • 1,630
  • 4
  • 25
  • 45

2 Answers2

8

For this issue you have to set self.scrollView.contentSize bigger than self.contentView.bounds so it get proper space to scroll.

replace this line

self.scrollView.contentSize = self.contentView.bounds.size

to this:

self.scrollView.contentSize = self.contentView.bounds.size*2 //or what ever size you want to set
Ashish Thakkar
  • 944
  • 8
  • 27
0

Try this:

@IBAction func zoomPicture() {
    if (scale <= 1.5) {
        scale = scale + 0.1
        scrollView.zoomScale = scale
        scrollView.maximumZoomScale = 1.5
        scrollView.minimumZoomScale = 1.0
        let size = contentView.bounds.size
        scrollView.contentSize = CGSize(width: size.width * scale, height: size.height * scale)
        scrollView.scrollEnabled = true
    }
}
Lumialxk
  • 6,239
  • 6
  • 24
  • 47