如何使 ScrollView 中的 Image 表现得像 MapView

How to make Image in ScrollView behave like MapView

我正在构建一个应用程序,我想在其中显示图像为 1260x1000 的平面图,大于我的视图控制器的大小。我希望用户能够平移图像并放大和缩小,类似于地图在 Mapview 中的行为方式。如何调整我的 ScrollView 属性以获得所需的结果?

  1. 首先,确保滚动视图的最大缩放比例大于默认值 1.0。如果需要,您可以在 Interface Builder 中更改它,或者在代码中使用 maximumZoomScale 属性。

  2. 让你的控制器代表你的滚动视图.. scrollView.delegate = self

  3. 确保您的视图控制器符合 UIScrollViewDelegate protocol, then add the viewForZooming(in:) 方法,如下所示:

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

所以基本上你的代码看起来与这个相似

class YourViewController: UIViewController, UIScrollViewDelegate {
    var scrollView: UIScrollView!
    var imageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        imageView = UIImageView(image: UIImage(named: "yourImage.png"))
        scrollView = UIScrollView(frame: view.bounds)
        scrollView.contentSize = imageView.bounds.size
        scrollView.addSubview(imageView)
        scrollView.delegate = self
        scrollView.minimumZoomScale = 0.3
        scrollView.maximumZoomScale = 2
        view.addSubview(scrollView)
    }

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