我尝试用分页创建一个简单的UIScrollView。我希望能够通过大量的PDF文档进行滚动,但是这给了我一些问题......用一个大的PDF分页UIScrollView
我尝试以下选项:
- 在启动转换所有的PDF页面的UIImages,这工作原理,但是是开始
- 手工绘制的PDF页面中的drawRect很慢,但是再一次,这是慢...
而且我不喜欢一切加载在启动时而是在做用法。
最近有没有人这样做过?似乎无法找到一个很好的示例项目。
Thnx!
耶勒
我尝试用分页创建一个简单的UIScrollView。我希望能够通过大量的PDF文档进行滚动,但是这给了我一些问题......用一个大的PDF分页UIScrollView
我尝试以下选项:
而且我不喜欢一切加载在启动时而是在做用法。
最近有没有人这样做过?似乎无法找到一个很好的示例项目。
Thnx!
耶勒
退房苹果的ZoomingPDFViewer样本:
http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html
ZoomingPDFViewer不会真正帮助在这里。它不包括分页,也不包括更快的加载。 这可能会对您有所帮助:http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html 将您的PDF绘制到自定义视图中。这似乎是最有效的技术。
此问题是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页加载到内存
检查了这一点:[github.com/vfr/Reader](http://github.com/vfr/Reader)这个项目涵盖了你所说的一切。 – 2012-11-23 09:46:13