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

时间:2012-09-05 10:36:39

标签: iphone ios xcode uiscrollview zoom

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

示例项目可以在此处下载:Apple Large Image Downsizing

可以在此处直接查看UIScrollView源: ImageScrollView.m

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

编辑:我下载了大型图像缩小项目。它与Apple的PhotoScroller有很多共同点,如果你在后面的项目中找到答案,你可能会想出如何限制缩放。我怀疑它与这些线有关:

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

那就是说,我拿了叶子图像并将其粘贴到PhotoScrollerNetwork的软件包中并在iPhone 4上进行了比较。大图像缩小项目花了一分钟来解码图像,你可以看到图像的增量视图虽然它渲染,但它(我相信)它需要磁盘上的整个图像才能继续。

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

PhotoScrollerNetwork优惠:

  • 并发图像下载和渲染
  • 自动设置细节级别以优化以全尺寸和全屏显示图像
  • 非常平滑的缩放和平移(由于预渲染的图块)
  • 没有文件保存在磁盘上(但它使用磁盘缓存):这意味着如果应用程序崩溃,则不需要清理。

    以下日志消息:

    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 of 14 2012-09-05 11:46:13.132 LargeImage [2242:3107]迭代2 of 14 2012-09-05 11:46:15.148 LargeImage [2242:3107]迭代3 of 14 2012-09-05 11:46:17.526 LargeImage [2242:3107]迭代4 of 14 2012-09-05 11:46:20.627 LargeImage [2242:3107]迭代5 of 14 2012-09-05 11:46:24.017 LargeImage [2242:3107]迭代6 of 14 2012-09-05 11:46:27.696 LargeImage [2242:3107]迭代7 of 14 2012-09-05 11:46:31.823 LargeImage [2242:3107]迭代8 of 14 2012-09-05 11:46:36.638 LargeImage [2242:3107]迭代9 of 14 2012-09-05 11:46:41.791 LargeImage [2242:3107]迭代10 of 14 2012-09-05 11:46:47.309 LargeImage [2242:3107]迭代11 of 14 2012-09-05 11:46:53.299 LargeImage [2242:3107]迭代12 of 14 2012-09-05 11:46:59.832 LargeImage [2242:3107]迭代13 of 14 2012-09-05 11:47:06.800 LargeImage [2242:3107]迭代14 of 14 2012-09-05 11:47:13.666 LargeImage [2242:3107]缩小尺寸。

    2012-09-05 11:57:24.465 PhotoScrollerNetworkTurbo [2262:1c03]初始化:总计:270237696使用:163041280免费:107196416 [居民= 6574080虚拟= 346882048] 2012-09-05 11:57:24.532 PhotoScrollerNetworkTurbo [2262:1c03] ORIENTATION = 1 string = 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 [居民= 3469312虚拟= 349683712]