计算scrollView中的精确缩放

时间:2019-07-04 10:51:47

标签: ios swift

这是我目前所做的视图:

enter image description here

  • 黑色部分是scrollView。
  • scrollView内部是ImageView。
  • 图像是风景。

我想要实现的是通过设置minimumZoomScale,使图像的顶部和底部适合scrollView。

1 个答案:

答案 0 :(得分:1)

假设您的布局非常类似于宽高比适合模式,那么您可以在顶部/底部或左侧/右侧放置黑色部分。您将需要检查哪个纵横比更大。检查以下内容:

func getZoomScaleToFillSize(_ contentSize: CGSize, inFrame viewFrame: CGRect) -> CGFloat {
    let contentAspect = contentSize.width/contentSize.height
    let panelAspect = viewFrame.width/viewFrame.height
    if(contentAspect > panelAspect) {
        // Means it will be black on top and on bottom
        return contentAspect/panelAspect
    } else {
        // Means it will be black on left and right
        return panelAspect/contentAspect
    }
}

因此,在两种情况下,我们都需要放大一点。在您的情况下,contentSize应该是图像的大小。并且viewFrame应该是滚动视图的框架。结果应该是需要进行缩放以使其“填充”并且黑色部分应该消失的缩放量。