2011-01-06 5 views
1

ページングを使用して簡単なUIScrollViewを作成しようとしています。大きなPDFでUIScrollViewをページングする

  • は、この、起動時にUIImagesにすべてのPDFページを変換します。そして、私は、次のオプションを試してみました私は、大きなPDF文書をスクロールできるようにしたいが、これは私にいくつかの問題を与える...

    動作しますが、

  • 手動のdrawRectでPDFのページを描画開始に非常に遅いですが、またしても、これは遅かった...

そして、私は中にそれを行うことではなく、起動時にすべてのものをロードしたくありません使用法。

最近誰かがこのことをしましたか?素晴らしいサンプルプロジェクトを見つけることができないようです。

Thnx!

Jelle

+0

これをチェック:[github.com/vfr/Reader](http://github.com/vfrを/読者)あなたが言ったことすべてをカバーするプロジェクトです。 –

答えて

0

ZoomingPDFViewerは本当にここに助けにはなりません。ページングをカバーするものではなく、より高速な読み込みをカバーしません。 これは少し役に立ちます:http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html PDFをカスタムビューに描画します。それは最も効率的なテクニックのようです。

1

この問題は、PDFレンダリングで最もよく知られた問題の1つです。解決策は、限られた数のpdfページをキャッシュすることです。 iosデバイスのメモリが不足しているため、pdfファイルが大きい場合は、すべてのページをキャッシュすることはできません。

たとえばGoodreader(iOS PDFリーダーアプリケーションの中で最も優れたものの1つ)はキャッシュメカニズムも使用しています。 Goodreaderは、ページをめくるときに3ページをキャッシュします。しかし、あなたはページをより速く反転するときに問題があります。新しいページの読み込みにはより長い時間が必要です。

まず、Goodreaderのソリューションでは、前のページ、現在のページ、次のページでキャッシュを開始します。ユーザーがページを反転させると、前または次のページをキャッシュする必要があります。

例を挙げておけば、

開始点(理由はパフォーマンスの問題のバックグラウンドスレッドとメモリへの2つのページのロード):

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

ユーザーが次のページに反転したとき、このソリューションロジックと

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

、あなたは以上の3ページをロードする機会を持って、あなたの記憶に

関連する問題