時間プロファイルによると、[UITable layoutSubviews] の呼び出しが原因で、アプリが [CALayer layoutSublayers] に多くの時間を浪費していることがわかりました。そのため、テーブルビューを生成するアクションはスムーズではありません。最初にボタンをタップするたびに、次のビューが表示されるまでほぼ 2 秒待ちます。次のビューの tableview の各セルには 8 つのサブビューがあり、layoutSubviews の使用時間が長すぎます。したがって、この進行状況を最適化する方法を知りたいのですが、rawrect にこれら 8 つのサブビューを含むカスタム セルを作成したくありません。layoutSubviews を避けるためです。誰が私を助けることができます?
1 に答える
私の推測では、あなたが見ているのは症状であり、本当の問題ではありません.
次のビューが表示されるまで、ほぼ 2 秒待ちます
あなたの説明は、最初に表示しようとしたときに、テーブルビューのすべてのセルを事前にレンダリングするように聞こえます(大量のレイアウトコストが発生します)。
にブレークポイントを設定しcellForRowAtIndexPath:
、サウンド アクションを追加し、[評価後に自動的に続行] を有効にして、これをデバッグします。
10回程度しか呼び出されないはずです(同時に表示される行の数によって異なります)。
heightForRowAtIndexPath:
長いリストを使用している場合、それが問題の原因である可能性があります (実装によって異なります)。その場合は使用を避けることを検討してください。iOS 7 をターゲットにしている場合は、参考にtableView:estimatedHeightForRowAtIndexPath:
なるかもしれません。(リンク: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDelegate_Protocol/Reference/Reference.html )。