无法滚动到可缩放图像中的每个位置

时间:2019-07-19 12:33:47

标签: swift

我有一个包含UIScrollView的ViewController,它使前导,尾部和底部对齐到安全区域,顶部对齐到超级视图。它只包含一个应该尽可能大的图像,并保持宽高比,适合屏幕且可缩放。我对此施加了以下约束: 将中心x和y对齐以进行预览 宽度/高度≤超级视图的宽度/高度 保持宽高比

但是现在图像开始具有其原始大小(小于ipad的宽度和高度),并且根据我放大的位置,我无法滚动到每个位置。我该如何实现? 这是我的ViewController:

class FullscreenImageViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet weak var scrollView: UIScrollView!
    @IBOutlet weak var fullImageView: UIImageView!
    @IBOutlet weak var closeButton: UIButton!
    var imageSource: UIImage?

    override func viewDidLoad() {
        super.viewDidLoad()

        scrollView.delegate = self
        fullImageView.image = imageSource
    }

    /**
     * Function used to close the presented ViewController.
     * @param sender The tapped button.
     */
    @IBAction func closeFullscreenViewController(_ sender: UIButton) {
        self.dismiss(animated: false, completion: nil)
    }

    /**
     * Function used to handle the zooming functionality. The ScrollView is given the view it should use for the zooming, in this case the imageView.
     * @param scrollView The ScrollView.
     */
    func viewForZooming(in scrollView: UIScrollView) -> UIView? {
        return fullImageView
    }
}

1 个答案:

答案 0 :(得分:0)

  

我对它施加了以下约束:将x和y的中心对齐到视图的宽度/高度≤视图的宽度/高度,保持宽高比

这就是问题所在。您没有做任何事情来使滚动视图可滚动。

默认情况下,滚动视图不可滚动;您需要设置其内容大小,以便它知道滚动多少。滚动视图的内容大小为零,因此无法滚动。它对图像的缩放大小一无所知,因此当您缩放图像时,仍然无法滚动。

您需要将图像视图的 edges 固定到滚动视图,以便在图像视图展开时,滚动视图知道其边缘在哪里,并让您看到它们。

>