如何使 UIScrollView 缩放到 UIImage 的大小?

Posted

技术标签:

【中文标题】如何使 UIScrollView 缩放到 UIImage 的大小?【英文标题】:How do I make a UIScrollView zoom to size of UIImage? 【发布时间】:2009-10-01 20:30:12 【问题描述】:

现在,当我双击 UIScrollView 时,我会运行这段代码(取自 Apple 自己的示例代码):

#define ZOOM_STEP 1.5
float newScale = [imageScrollView zoomScale] * ZOOM_STEP;
CGRect zoomRect = [self zoomRectForScale:newScale withCenter:tapPoint];
[imageScrollView zoomToRect:zoomRect animated:YES];

但是,我已将最大缩放设置为 3,但我想弄清楚如何使双击缩放为 1px = 1px,也就是说,UIScrollView 放大到 UIImage 的实际大小在里面。但我不确定如何计算图像的大小以便将其用于缩放?

【问题讨论】:

【参考方案1】:

我找到了您从中提取的示例代码。它是 ScrollViewSuite 中的 TapToZoom 项目,地址为 http://developer.apple.com/iphone。

我将计算 newScale 的行更改为 Scroll View 的框架大小与 Image View 的 Image 大小之间的比率。这具有您想要的放大效果,直到图像以 1:1 分辨率显示。

注意:我还确保名为 imageView 的 UIImageView 是一个类变量。在原始示例代码中,它是在 viewDidLoad: 方法中本地声明的。

这里需要注意的是,滚动视图和图像具有相同的 x/y 比率。我只计算宽度。

- (void)tapDetectingImageView:(TapDetectingImageView *)view gotDoubleTapAtPoint:(CGPoint)tapPoint 
    // double tap zooms in on them image to a 1:1 resolution (based on width)
    float newScale =  imageView.image.size.width / imageScrollView.frame.size.width;
    CGRect zoomRect = [self zoomRectForScale:newScale withCenter:tapPoint];
    [imageScrollView zoomToRect:zoomRect animated:YES];

【讨论】:

谢谢,布拉德!那完全做到了。就像你指出的那样,高度/高度将与宽度/宽度相同。

以上是关于如何使 UIScrollView 缩放到 UIImage 的大小?的主要内容,如果未能解决你的问题,请参考以下文章

当我的 UIScrollView 缩放图像时,如何使框架正确居中?

缩放CALayer会使视图模糊

使用 Swift、autolayout 和 SnapKit 使带有 UIImageView 的 UIScrollView 自动缩放内容

如何访问添加到 UIScrollView 的 UIView 上的控件

如何在 UIScrollView 中捏缩放多个 UIImageView

如何使用 UIScrollView 捕捉缩放?