0

Amazon の Kindle アプリのように動作するリーダーを作りたいと思っています。具体的には、1 ページにつき 1 列の段落に正当化された一連のテキストを表示し、Kindle アプリのようにページ間をスクロールさせたいと考えています。

章ごとのテキスト ファイル、または章ごとにメモリにハードコードされた文字列など、単純な形式のテキストがあると仮定しましょう。

彼らは明らかに Core Text を使用しています。ページスクロールビューを使用していますか? 大きな本の場合、メモリの問題が発生しますか?

4

2 に答える 2

1

私の最初の考えでは、UITextView を使用して大量のテキストを表示しています。この種のビューを使用すると、マージン、パディング、テキストを追加できます。iOS 6 では、NSParagraphStyle などを使用してテキストにスタイルを設定できます。アプローチは、UIScrollView 内のさまざまな UITextViews で非常に長いテキストを作成することです。これにより、良い結果が得られますが、メモリが懸念され、iOS バージョンが問題ではない場合は、UICollectionViews を使用することをお勧めします。各ページを「セル」を作成し、カスタム レイアウトを記述して、ユーザーが本をスクロールしているときに、ユーザーが特定の瞬間に使用しているページを実際にインスタンス化できるようにします。

NSCollectionView の優れた点は、UITableView とまったく同じように動作するため、メモリ効率が非常に高く、画面にないものは表示されず、表示される場合は読み込まれることです。

これにより、問題についての洞察が得られることを願っています。

于 2013-01-22T20:44:14.867 に答える
1

私は最終的に完全にカスタムしたものを作りました。left mainaとviewの 3 つのビューで構成されrightます。

ビュー コントローラーは、mainCore Text を使用してビューにテキストをレンダリングし、現在の章の各ページのテキスト フレームのサイズ (したがってページ数) を計算します。

ユーザーが右または左にタップまたはドラッグすると、ビュー コントローラーはサイド ビューの 1 つをレンダリングし、それをドラッグできるようにします。ドラッグを終了するか、タップ操作を完了すると、ページが所定の位置にアニメーション化され、メイン ビューがドラッグ先のビューに切り替わります。

a を使用するよりもこの方法の利点UICollectionViewは、テーブル/コレクション ビューで必要になるように、特定のページに表示する必要がある正確なコンテンツを決定論的な方法で計算するのは非常にコストがかかることです。この方法により、任意の章のテキストをレンダリングし、本全体を一度にレイアウトすることなく、遅延して前後に移動することができます。

于 2013-02-05T16:06:54.243 に答える