【问题标题】:Paging a UIScrollView with a large PDF使用大 PDF 分页 UIScrollView
【发布时间】:2013-01-06 06:22:37
【问题描述】:

我尝试创建一个带有分页的简单 UIScrollView。而且我希望能够滚动浏览一个大的 PDF 文档,但这给我带来了一些问题......

我尝试了以下选项:

  • 在启动时将所有 PDF 页面转换为 UIImages,这可行,但启动时很慢
  • 在 drawRect 中手动绘制 PDF 页面,但速度又慢...

而且我不喜欢在启动时加载所有内容,而是在使用期间加载。

最近有人这样做吗?似乎找不到很好的示例项目。

谢谢!

杰勒

【问题讨论】:

标签: iphone ipad


【解决方案1】:

【讨论】:

    【解决方案2】:

    此问题是 PDF 渲染中最知名的问题之一。解决方案是缓存有限数量的 pdf 页面。由于 ios 设备内存不足,当您拥有较大的 pdf 文件时,您无法缓存所有页面。

    例如 Goodreader(最好的 iOS PDF 阅读器应用程序之一)也使用缓存机制。翻页时Goodreader缓存3页;但是,当您更快地翻页时,它们会出现问题。因为,加载新页面需要更长的时间。

    您首先从 Goodreader 的解决方案开始,例如从上一页、当前页和下一页开始缓存。当用户翻页时,你应该缓存上一页或下一页。

    如果我举个例子;

    起点(由于性能问题,使用后台线程将两个页面加载到内存中):

    prev = nil;
    current = page1;
    next = page2;
    

    当用户翻到下一页时;

    prev = page1;
    current = page2;
    next = page3 //(Load into the cache);
    

    使用此解决方案逻辑,您有机会将超过 3 个页面加载到内存中

    【讨论】:

      【解决方案3】:

      ZoomingPDFViewer 在这里并没有真正的帮助。它不包括分页,也不包括更快的加载。 这可能会对您有所帮助:http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html 将您的 PDF 绘制到自定义视图中。这似乎是最有效的技术。

      【讨论】:

        猜你喜欢
        • 2011-09-27
        • 2011-08-07
        • 1970-01-01
        • 2011-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-06
        • 1970-01-01
        相关资源
        最近更新 更多