如何使 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 缩放图像时,如何使框架正确居中?
使用 Swift、autolayout 和 SnapKit 使带有 UIImageView 的 UIScrollView 自动缩放内容
如何访问添加到 UIScrollView 的 UIView 上的控件