19

たくさんのリッチテキスト(HTML形式)を表示するための最良の方法は何ですか

現在、フォーラム用のアプリに取り組んでいます。あなたが期待するように、サイトの投稿にはたくさんのHTMLフォーマット、リスト、画像の太字のテキスト、色付きのテキストなどがあります...

今、私が考えることができるいくつかのオプションがあります(それらのどれも理想的ではありません、他のオプションを考えたらコメントにそれらを投稿してください):

  • 投稿ごとにNSAttributedString+HTML + DTAttributedTextViewを使用するカスタムセル?

    問題:他の場所のアプリでNSAttributedString + HTMLカテゴリを使用しましたが、理想的とは言えませんでした。NSAttributedStringの作成は、少量でも非常にコストがかかる(遅い)ようです。10以上の投稿の場合、それぞれが記事全体の長さになる可能性があります+DTAttributedTextViewはIMGhtmlタグ(ほとんどのタグ)をサポートしていますが、画像の幅と高さをimgで指定しない限り、画像のリモート読み込みはサポートされていません鬼ごっこ。また、IMGタグがスマイリー(10 * 10)またはスクリーンショット(640 * 960)である可能性があるフォーラムの場合、それを予測する方法はありません。 (このNSAttributedString + HTMLを記述してから、現在はDTCoreTextに名前が変更され、タグの完全なサポートが追加され、<img>大幅に改善されました!)

  • 投稿ごとにUIWebViewを含むカスタムセル?

    これはかなり前から考えていましたが、このブログ投稿を読んでいると、スムーズなスクロールの原因となる問題に気づきました。サイトのネイティブアプリケーションを使用するという考え方は、単純なUIWebViewを使用してサイトのモバイルテーマを表示するよりも優れているということです。アプリが遅れてスクロール中にぎくしゃくした場合、それは悪くありません(また、彼が提案するようにWebビューを非表示にする画像を表示する必要があるため)。また、UIWebViewはメインスレッドで作成する必要があります。そうしないと壊れます。

  • UIWebViewに戻りますか?( iFansアプリ のように)哀れなチートを行う以外に、テキストだけを表示し、クリックするとUIWebViewにすべての素敵な画像などが読み込まれるので、面倒なことに、残っている唯一のオプションは、私が思うことを実行することです。 TapaTalkアプリは、UIWebViewとしてスレッドビュー全体を実行します。おそらくかなり良いパフォーマンスがあり、ユーザー制御のテーマなどを追加できる可能性があるため、これはそれほど悪くはありません。しかし、WebサイトのネイティブアプリでUIWebViewを使用するというアイデアは反発的です。

Facebookクライアント、フォーラムアプリ、またはサイトのコンテンツを表示する必要のある新しいサイトアプリなど、Webを利用したアプリを作成した経験はありますか Twitterクライアントは、テキストと投稿ごとに少量のリンク)。または、iOSアプリでリッチテキストコンテンツを表示するための最良の方法に関するアイデアはありますか?

どんなアイデアでもたくさん対処しなければならないでしょう:

  • マルチカラーテキスト。
  • 右、左、中央揃えのテキスト。
  • (可変サイズの)画像。
  • 太字。
  • さまざまなサイズとフォントのテキスト。
  • テキストに下線を付けます。
  • ユーチューブの動画。
  • HTMLテーブル。

実際の質問がすべてにおいてあまり明確ではなかった場合に備えて、私はそれを要約します:

フォーラムクライアントアプリのリッチテキスト(HTML形式)コンテンツを大量に表示するための最良の方法は何ですか?

4

2 に答える 2

3

したがって、私がこの権利を読んでいる場合、特定のトピックのフォーラム投稿をUITableViewのセルにし、セルに豊富な書式を設定する必要がありますか?

これが正しいと仮定すると、各投稿が画面の多くを占める(セルの高さが大きい)と思います。この場合、サブビューとしてUIWebViewを使用することは、パフォーマンス的には思ったほど悪くないかもしれません。UITableViewはセルを再利用するため、実際には表示されているセルのみをメモリにロードする必要があります。

また、APIを介してフォーラムにアクセスできると思いますよね?この場合、ビューをロードする直前にデータをプリロードできるはずであり、UIWebViewsはフォーマットにのみ使用されます。HTMLStringをUIWebViewにロードするときに、アプリバンドルからCSSファイルをロードすることもできるため、サーバーから毎回ロードする必要はありません。

とはいえ、同時に表示されるセルが多数ある場合は別の話になる可能性があり、UITableViewインデックスにプレーンテキストのみを表示し、ユーザーがセルをタップして表示する場合にのみリッチフォーマットを表示することを検討します。単一の投稿。これは、画面上にさまざまな形式のセルが大量に表示されると、少しずさんな外観になる可能性があるため、設計の観点からも優れている可能性があります。

また、これは明らかかもしれませんが(特に、パフォーマンスとデザインの両方を意識しているように見えるため)、UIコントロールにUIWebViewを使用しないでください。UIWebViewタブバーまたは偽のナビゲーションバーが表示されるたびに、私はうんざりします(ack、Netflix)。ただし、フォーマットについては、サーバーから大量の動的コンテンツをロードしている場合、多くの場合、これが飛行する唯一の方法です。

于 2011-07-09T01:36:24.743 に答える
2

NSAttributedString + HTMLは、画像の遅延読み込みをすでにサポートしています。その方法を示すデモを参照してください。かなり高速ですが、画面に表示されていないコンテンツのHTMLを解析する必要があります。

それは主にあなたが達成したいUIに依存します。NSAS + HTMLは、HTMLの品質を制御する状況(つまり、HTMLを自分で生成するため)を対象としています。独自のカスタムビューを埋め込んで画像を表示できるため、ビュー階層をこれまでにないレベルで制御できます。

HTMLの品質がわからない場合は、UIWebViewを使用して、すべての制限を回避する必要があります。1つは、大量のRAMを使用し、コンテンツの表示に時間がかかることです。また、UIWebViewはスレッドセーフではありません(WebKitがそうではないため)。

于 2011-07-18T16:54:09.573 に答える