【发布时间】:2011-06-24 17:40:44
【问题描述】:
开发 iPad PDF 阅读器时,我们决定准备渲染密集页面(其中有很多路径)的高分辨率图像,并使用这些图像而不是 pdf 页面来避免性能问题。我们认为 3*768 by 3*1024 是可读性和渲染性能之间的一个很好的折衷方案,它会产生 ~1.5 MB jpegs。
不过,我们测试了两种用于显示图像页面的实现。一个使用CATiledLayer 子类,该子类还负责处理“普通”PDF 页面(使用CGContextDrawImage 绘图),另一个使用UIImageView。后者的优点是显示和缩放非常快,但内存使用量非常糟糕 - 大约需要 30 MB 内存(这与图像的位图大小一致)。另一种方法 (CATiledLayer) 需要更多时间来首次显示页面,并且在缩放后还需要两秒钟来重新渲染(类似于 pdf 页面,但速度更快),但不会占用比显示页面更多的内存小得多的图像或 PDF 页面。
有谁知道幕后发生了什么,以及是否可以通过使用 Quartz 框架将 CGContextDrawImage 的低内存使用率与 UIImageView 的高性能结合起来。
【问题讨论】:
标签: ios pdf uiimageview quartz-graphics