2012-04-03 6 views
6

UILabelの155の幅×155の高さを持つiPadアプリケーションでは、180 012 UILabels(サブビューはUITableViewCells)です。スクロールすると、それぞれに大きなUnicodeテキスト(アラビア語)が含まれています。 TableViewが1秒間ハングしてからスクロールが正常に行われた場合、これはユーザーがスクロールしようとするたびに発生し、これはiPAD2デバイスでテストされます。ユニコードテキストのUILabelsが多すぎます

しかし、テキストを英語に変更した場合(英語のテキストも大量)、TableViewはハングしてスクロールしません。

誰でもこの問題をUnicodeテキストで解決する方法を知りましたか?

ありがとうございます。

EDIT:

コードは簡単に、私はこのようなループで各UILabelを作成するので、ここに収まるように大きいです。そして、cellForRowAtIndexPath方法で[[[UILabel alloc] initWithFrame:CGRectZero] autorelease];をインタフェースに応じて、同様の方法で、後フレームと遊びます私がUILabelをこのようにセルに追加すると、[cell.contentView addSubView:myLabel];のようになります。各セルにはこれらの「UILabels」が4つ含まれているので、合計45個のセルがあります。

+3

私は直接的な答えは分かりませんが、他の潜在的な脅威があるため、できるだけ早く 'UITableViewCells'のサブビューに役立つようにアプリケーションを最適化しようとします。ユーザがすばやくスクロールしてコンテンツがレンダリングされる前にセルがスクロールすると、全体のUITableViewは空になり、ビュー全体を再ロードせずにリカバリする方法はありません。 – MrTJ

+1

ユニコードテキストのサイズ内にあると思われる問題は、ラベルにテキストを割り当てる前にこのサイズを減らす方法を見つけることができませんでした – JAHelia

+8

巨大なテキストがロードされた180個のラベルを持つビューを作成するといいですか?スマートフォンアプリのデザインを素早く整理しましたか? – serb

答えて

0

あなたのコードを最適化することができる多くの方法があります:あなたのアプリが漏れていないされている場合

一つのチェックが。ラベルの適切なリリース。 細胞の再利用性を使用します。あなたがそれを使用しているかどうかは分かりません。 cellForRowAtIndexPathデリゲートメソッドをスクロールするたびに呼び出されるためです。それは、他のテキストに似た速度でレンダリングされますよう

In case you dont know about reusability try this link.

+0

私はdequeueReusableCellを使用しましたが、この場合には何のメリットもありません – JAHelia

+0

メモリの割り当ては、実際の再描画よりもはるかに高速です。 – Sulthan

+0

あなたのコードを表示できますか?複数のイメージを読み込むことはある程度最適化できるので、私はこの質問で述べたようにラベル – DivineDesert

1

ユニコードの使用は、ここで問題になることはありません。

コードの処理速度が低下することがあります。まず、UITableViewのネイティブなセル再利用を使用して、ラベルをUITableViewCellに追加してからdequeueWithResusableIdentifierを追加してください。そのメソッドがnilを返し、新しいUITableViewCellを作成しなければならないときにのみラベルを生成するべきです(既にこれを行うと元の質問からはわかりません)。

この後に行うことができるもう1つのことは、合成のスピードアップを可能にするために多くのビューが不透明であることを確認することです。インストゥルメントには、これを容易にするために不透明でないビューに色を付けるオプションがあります。

+0

dequeueWithResusableIdentifierが使用されていますが、大きな違いはありません。質問に記載されているように、textViewが通常英語の場合はtableViewがスクロールし、Unicodeの場合は異常です – JAHelia