iphone - 如何为 Apple 的 Large Image Downsizing iOS 示例设置最大缩放限制?

标签 iphone ios xcode uiscrollview zooming

我在我的项目中使用 Apple 的 Large Image Downsizing 示例代码来加载可以缩放的大图像。

示例项目可以在这里下载:Apple Large Image Downsizing

UIScrollView源码可以直接看这里: ImageScrollView.m

除了用户可以放大到无限之外,它运行良好。似乎当 Apple 使用 UIScrollView 的缩放功能时,实际缩放是通过重新缩放源图像而不是通过转换 UIView 来执行的。 (虽然我对它的工作原理的理解有点不稳定!)

我正在寻找限制在图像全分辨率范围内的最大缩放。

最佳答案

我不知道那个项目,但它似乎没有做你真正想要的。它可以让您拍摄非常大的图像文件并将其缩小。

有github项目PhotoScrollerNetwork它可以让你下载巨大的 JPEG 图像(一个是 NASA 18,000 x 18,000)并在它们到达时逐步解码。然后它使用 CATiledLayers 以足够小的缩小显示图像以适合窗口,但可以缩小到完整图像分辨率。这可能更符合您的目标。

该项目基于 Apple 的 PhotoScroller 项目,该项目仅适用于预平铺图像。

编辑:我下载了 Large Image Downsizing 项目。它与 Apple 的 PhotoScroller 有很多共同之处。 ,如果你仔细查看后面的项目,你可能会弄清楚如何限制缩放。我怀疑它与这些行有关:

    self.maximumZoomScale = 5.0f;
    self.minimumZoomScale = 0.25f;

就是说,我拍摄了叶子图像并将其粘贴到 PhotoScrollerNetwork 的 bundle 中,并在 iPhone 4 上进行了比较。大图像缩小项目花了一分钟来解码图像,您可以看到图像的增量 View 虽然它会呈现,但它(我相信)它需要磁盘上的整个图像才能继续。

PhotoScrollerNetwork 能够在 32 秒内解码图像 - 大约是一半的时间。如果您从网络下载,它会在接收数据时对图像进行解码,因此从最后一个数据 block 到您看到图像的延迟很小。

PhotoScrollerNetwork 优惠:

  • 并发图像下载和渲染

  • 自动设置细节级别以优化以全尺寸和全屏显示图像

  • 非常平滑的缩放和平移(由于预渲染的图 block )

  • 没有文件保存在磁盘上(但它使用磁盘缓存):这意味着如果应用程序崩溃则不需要清理。

    下面的日志消息:

    2012-09-05 11:46:11.784 LargeImage[2242:3107] 开始缩小尺寸。迭代次数:14,瓷砖高度:754.000000,剩余高度:425 2012-09-05 11:46:11.788 LargeImage[2242:3107] 第 1 次迭代,共 14 次 2012-09-05 11:46:13.132 LargeImage[2242:3107] 第 2 次迭代,共 14 次 2012-09-05 11:46:15.148 LargeImage[2242:3107] 第 3 次迭代,共 14 次 2012-09-05 11:46:17.526 LargeImage[2242:3107] 第 4 次迭代,共 14 次 2012-09-05 11:46:20.627 LargeImage[2242:3107] 第 5 次迭代,共 14 次 2012-09-05 11:46:24.017 LargeImage[2242:3107] 第 6 次迭代,共 14 次 2012-09-05 11:46:27.696 LargeImage[2242:3107] 第 7 次迭代,共 14 次 2012-09-05 11:46:31.823 LargeImage[2242:3107] 第 8 次迭代,共 14 次 2012-09-05 11:46:36.638 LargeImage[2242:3107] 第 9 次迭代,共 14 次 2012-09-05 11:46:41.791 LargeImage[2242:3107] 第 10 次迭代,共 14 次 2012-09-05 11:46:47.309 LargeImage[2242:3107] 第 11 次迭代,共 14 次 2012-09-05 11:46:53.299 LargeImage[2242:3107] 第 12 次迭代,共 14 次 2012-09-05 11:46:59.832 LargeImage[2242:3107] 第 13 次迭代,共 14 次 2012-09-05 11:47:06.800 LargeImage[2242:3107] 第 14 次迭代,共 14 次 2012-09-05 11:47:13.666 LargeImage[2242:3107] 缩小完成。

    2012-09-05 11:57:24.465 PhotoScrollerNetworkTurbo[2262:1c03] 初始化:总计:270237696 使用:163041280 免费:107196416 [resident=6574080 virtual=346882048] 2012-09-05 11:57:24.532 PhotoScrollerNetworkTurbo[2262:1c03] 方向=1 字符串=1 2012-09-05 11:57:24.535 PhotoScrollerNetworkTurbo[2262:1c03] ZLEVELS=5 2012-09-05 11:57:57.463 PhotoScrollerNetworkTurbo[2262:1c03] FINISH-I: 32974 毫秒 2012-09-05 11:57:57.946 PhotoScrollerNetworkTurbo[2262:1c03] 已完成:总计:260521984 使用:219987968 免费:40534016 [resident=3469312 virtual=349683712]

关于iphone - 如何为 Apple 的 Large Image Downsizing iOS 示例设置最大缩放限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12279534/

相关文章:

ios - 向 Apple Watch 扩展程序发送通知

iphone - 如何在 iphone 应用程序中解析 HTML 页面数据?

ios - ScrollView 打破自动布局尾随和前导空间

xcode - cocoa编译的应用程序资源保留文件夹结构吗?

iphone - 如何在简单表单上启用下一个和上一个按钮

iphone - iOS 设备作为 Web 服务器

ios - UICollectionView 的 SectionIndexTitles

iphone - 在我的 View Controller.m 上填充 Dealloc

ios - ScrollView swift 3 中的垂直对齐图像

尝试在 Swift Playground 中执行此操作时 Xcode 卡住?