首页 > 解决方案 > 通过 StoryBoard 在滚动视图中平移大图像

问题描述

我正在构建一个应用程序,我想显示一个平面图,其中图像为 2952x3600,大于我的视图控制器的大小。我希望用户能够平移图像并放大和缩小,类似于地图在 Mapview 中的行为方式。

我能够使用以下代码以编程方式获得所需的结果。但是,我希望能够向图像添加按钮,并且在情节提要中这样做会更容易。如何在情节提要中完成相同的结果?

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

    override func viewDidLoad() {
        super.viewDidLoad()
        imageView = UIImageView(image: UIImage(named: "TorontoPATHNetworkMap_v.2018.08.pdf"))
        scrollView = UIScrollView(frame: view.bounds)
        scrollView.contentSize = imageView.bounds.size
        scrollView.addSubview(imageView)
        scrollView.delegate = self
        scrollView.minimumZoomScale = 0.3
        scrollView.maximumZoomScale = 5
        view.addSubview(scrollView)
    }

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

标签: iosswiftuiscrollviewuiimageviewstoryboard

解决方案


如果您想添加其他 UI 元素(按钮、标签、子视图等)并在缩放滚动视图内容时让它们缩放和移动,您有几个选择:

1) 在代码中添加按钮作为图像视图的子视图。它们将随着图像视图移动/调整大小。

2) 如果您发现在视觉上布局按钮更容易,您可以在 Storyboard / Interface Builder 中进行布局。但是,在 IB 中,您不能将子视图添加到 a UIImageView,因此您需要将图像视图和按钮嵌入到 "容器" 中UIView。然后在你的控制器类中container viewviewForZooming


编辑

这是在 Storyboard / IB 中设置视图的示例:https ://github.com/DonMag/PDFImagePanZoom


推荐阅读