2012-02-29 9 views
3

私のアプリでは、カスタムUITableViewCellを含むUITableViewがあります。スクロールは非常に遅く、遅いです、私はこれを解決する必要があります。iOS UITableViewCellの最適化

各セルには、5-6個のラベル、少数のボタン、およびイメージが含まれています。

ボタン、ラベル、およびイメージビューを配置するセル用のxibがありますが、すべてのイメージをcellForRowAtIndexPathに設定しました。画像を読み込むには、[UIImage imageNamed:@ ""]を読んでください。これは最適化の方がいいです。私は再利用細胞でもあります。

私がコメントアウトしてイメージを設定しなくても、ラベルはテキストだけで設定されていて、まだテーブルが遅いことがわかりました。

誰かが、やや複雑な表のセルを持ちながらも、滑らかなパフォーマンスを引き続き得る方法について提案していますか?カスタムセルをxibのパフォーマンスの妨げにしていますか?

+0

あなたの'テーブルビューを見ることが役立つだろう。 –

答えて

9
  1. 本当に細胞を再利用していることを確認してください。使用しているセルの が、インターフェイスビルダーのUITableViewCell のXIBに設定されていることを確認します。

  2. サブビューで透明度を低くします。可能であれば、ラベルに入り、背景がセルの背景の背景と一致することを確認します。

  3. 最適化されていないコードを確認してください。たとえば、書式設定された日付を表示していて、tableview:cellForRowAtIndexPath:が呼び出されるたびにNSDateFormatterというインスタンスを作成している場合、これは実際にあなたのアプリを駄目にします。

  4. Timing and Core AnimationモジュールでInstrumentsを使用すると、時間の大部分を費やす場所を見つけることができます。最終的に、これらは、真のパフォーマンス問題がどこにあるかを明らかにすることができます。

+0

私は実際にxibで識別されたセルを決して設定しないことを知っていましたので、今度はイメージなしでスクロールすると非常にスムーズになります。私はまた、透明ではなく無地の色にラベルを設定しました。今私は1 UIImageViewを読み込まずに、今言ったように、スムーズにスクロールしますが、イメージを戻すとスクロールが少し遅くなりますが、それほど前と同じくらいです。ありがとう! – RyanG

+0

私はまた、私のcellForRowAtIndexPathの日付を計算しています:、私はテーブルをロードする前にもそれらを移動し、それらの日付を取得するつもりです。 – RyanG

4

カスタムサブタイトルを実装し、drawRect:で独自の図面を1つの不透明体で作成するUIView

このようにすると、スクロールが多くなります。

+2

そして、.xibを使用しないでください –

2

IBでは、いくつかのプロパティをNOに設定します。

スクロールでは、「横スクロール」を「いいえ」に設定します。 cellForRowAtIndexPath:: `実装それはyou'rテーブルビューのスクロールをスムーズにできるようになりますNO

に「遅延コンテンツタッチ」と「キャンセル可能コンテンツタッチ」に設定タッチで は、

+0

ありがとう私はそれらのすべてをNOに設定し、それはちょっと助けてくれたようです、ありがとう! – RyanG

+0

これは、私を助けなかった –