无法缩放 UIImageView

Cannot Zoom UIImageView

我是 swift 的新手。

我正在做一本应用程序开发书籍中的练习。我正在尝试创建一个 UIImageView 并将图像放入其中,但我无法放大图像。我的代码有问题,但我不知道发生了什么。

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {


    @IBOutlet weak var image: UIImageView!
    @IBOutlet weak var scroll: UIScrollView!

    override func viewDidLoad() {
        super.viewDidLoad()
        scroll.delegate = ViewController()
        updateZoomFor(size:view.bounds.size)
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    private func viewForZooming(in scrollView: UIScrollView) -> UIImageView{
        return image
    }

    func updateZoomFor(size:CGSize){
        let widthScale = size.width / image.bounds.width
        let heightScale = size.height / image.bounds.height
        let scale = min(widthScale, heightScale)
        scroll.minimumZoomScale = scale
    }

}

首先,按照3stud1ant3的建议设置scroll.delegate = self

其次,需要匹配UIScrollViewDelegate方法的定义:

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

确保在 updateZoomFor 中也设置了缩放比例:scroll.zoomScale = scale

你还需要实现这个:

override func viewWillLayoutSubviews() {  
  super.viewWillLayoutSubviews()
  updateZoomFor(size: view.bounds.size)
}

func scrollViewDidZoom(_ scrollView: UIScrollView) {
  updateConstraintsForSize(view.bounds.size)
}

fileprivate func updateConstraintsForSize(_ size: CGSize) {

  let yOffset = max(0, (size.height - imageView.frame.height) / 2)
  imageViewTopConstraint.constant = yOffset
  imageViewBottomConstraint.constant = yOffset

  let xOffset = max(0, (size.width - imageView.frame.width) / 2)
  imageViewLeadingConstraint.constant = xOffset
  imageViewTrailingConstraint.constant = xOffset

  view.layoutIfNeeded()
}