89 votes

Des astuces pour améliorer les performances de défilement de iPhone UITableView?

J'ai un uitableview qui se charge assez grandes images dans chaque cellule et la cellule hauteurs varient en fonction de la taille de l'image. Les performances de défilement est décent, mais peut parfois être saccadée.

J'ai trouvé ces conseils que j'ai trouvé sur le FieryRobot blog:

vitreux de défilement-avec-uitableview

plus-vitreux-défilement-avec-uitableview

Quelqu'un aurait-il des conseils pour l'amélioration de la uitableview les performances de défilement?

157voto

rpetrich Points 25769
  1. Cache de la hauteur des lignes (la vue de la table pouvez en faire la demande fréquemment)
  2. Créer un moins récemment utilisés cache pour les images utilisées dans la table (et invalider toutes les entrées inactives lorsque vous recevez un avertissement de mémoire)
  3. Tout dessiner dans l' UITableViewCells' drawRect: si possible, éviter de sous-vues à tout prix (ou si vous avez besoin de la norme d'accessibilité de la fonctionnalité, de l'affichage du contenu de l' drawRect:)
  4. Faites votre UITableViewCell's de la couche opaque (en va de même pour l'affichage du contenu si vous en avez un)
  5. Utiliser le reusableCellIdentifier fonctionnalités tel que recommandé par l' UITableView exemples et de la documentation
  6. Éviter les dégradés/compliqué effets graphiques qui ne sont pas pré-cuite en UIImages

40voto

Shaggy Frog Points 20388
  1. Si vous sous-classez UITableViewCell , n'utilisez pas de Nib, écrivez-le dans le code. C'est beaucoup plus rapide que de charger des fichiers Nib.
  2. Si vous utilisez des images, assurez-vous de les mettre en cache afin de ne pas avoir à charger le fichier plus d'une fois pour chacune (si vous avez de la mémoire, vous seriez surpris de la quantité d'espace occupée par les images).
  3. Rendre autant d'éléments opaques que possible. De même, essayez de ne pas utiliser d’images avec transparence.

34voto

beno Points 1148

Le développeur derrière Tweetie a écrit de nombreux articles à ce sujet et a un peu de code qui montre comment il a été fait pour cette application. Fondamentalement, il/elle préconise une vue personnalisée par la cellule de la table, et le dessin manuellement (plutôt que subviewing avec Interface Builder, entre autres).

rapide-défilement-en-tweetie-avec-uitableview

Aussi, Apple a mis à jour son propre exemple de code pour TableView dans son TableViewSuite tutoriels (peut-être en réponse à cela?)

TableViewSuite

1voto

believesInSanta Points 179

Le n ° 1 des performances pour le défilement UITableView dessine des ombres sur n'importe quel calque de vue de cellule. Par conséquent, si les performances de défilement importent, ne faites pas d'ombres, sauf si cela ne ralentit pas le fil principal.

pensa que cela devait être dit car aucune des réponses acceptées ne mentionnait les ombres et les calques. : +)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X