【问题标题】:Scroll and zoom to specific CGRect of UIImageView滚动和缩放到 UIImageView 的特定 CGRect
【发布时间】:2020-10-08 17:16:10
【问题描述】:

我有一个UIScrollView 和一个UIImageView 里面。 UIScrollView 的大小为350x350UIImageView 内的图像为350x350

UIScrollViewzoomScale4

我只想显示图像矩形的特定点:

CGRect(x: 100, y: 100, width: 100, height: 100)

为了更好的理解,只有图片中的白色矩形:

x:100, y:100, 宽度:100, 高度:100

x:150, y:150, 宽度:100, 高度:100

到目前为止,我所做的无法解决问题:

    self.image.image = UIImage(named: "horse_marked_100x100")
    self.imageScroller.maximumZoomScale = 10
    self.imageScroller.minimumZoomScale = 1
    self.imageScroller.clipsToBounds = true
    self.imageScroller.delegate = self
    self.imageScroller.isScrollEnabled = false
    self.imageScroller.scrollRectToVisible(CGRect(x: 100, y: 100, width: 100, height: 100), animated: false)
    self.imageScroller.zoomScale = 4

【问题讨论】:

    标签: ios swift uiscrollview uiimageview zooming


    【解决方案1】:

    你可以使用:

        scrollView.zoom(to: CGRect(x: 100, y: 100, width: 100, height: 100), animated: true)
    

    您应该只注意滚动视图的maximumZoomScale 覆盖所需的大小。例如,在此示例中,您将无法放大小于 35 x 35 的矩形,因为您的 maximumZoomScale 为 10。在您的示例中,您对此没有任何问题。

    注意:CGRect 应该在viewForZooming(in:) 返回的视图的坐标空间中。这是一个UIScrollViewDelegate 方法,必须实现它才能启用缩放。在这里,您只需在滚动视图中返回 UIImageView

    更新:

    只是为了澄清到目前为止您尝试了什么以及为什么它不起作用:scrollView.scrollRectToVisible(_:, animated:) 将滚动到传递的CGRect 可见的位置,但不会缩放滚动视图。在这个例子中,CGRect 已经在滚动视图中完全可见,因此它不必在其他任何地方滚动,因此您看不到任何可见效果。

    【讨论】:

    • “被缩放比例覆盖”是什么意思?
    • 我的意思是,如果您想滚动到类似CGRect(x: 100, y: 100, width 20, height: 20) 的内容,zoomScale 将不会覆盖,因为可以从 350x350 的图像中以 4 的比例获得的最小矩形将是一个 87,5 x 87,5 的矩形。 Apple 的文档指出您根本不必关心这方面,但我建议您这样做。无论如何,在您的示例中,一切都应该正常工作。
    • 哦,别管缩放比例的大惊小怪了......我指的是maximumZoomScale,在你的例子中是10,这就足够了。在您调用scrollView.zoom(to: animated:) 之后,滚动视图无论如何都会更改zoomScale,但您不应该关心这一点。我也会在几分钟内更新我的答案。
    • 好的,它正在工作,但我想完全理解......我将图像的大小 (350x350) 除以 zoomScale,它为我提供了我想要的正确位置。但是他怎么知道我想要的位置的宽度/高度呢?
    • 不,缩放比例会被滚动视图自动改变。但是,如果您想缩放到小于 35 x 35(即 350 x 350 除以最大缩放比例 10)的任何东西,那么这可能是个问题。当您使用 100 x 100 时,这里没有它。但是如果您确实想要缩放小于 35 x 35 的东西,那么您需要相应地增加最大缩放比例。我所说的仅缩放比例并不适用,因为我将它与最大缩放比例混淆了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多