J'ai une vue modifiable qui charge des images assez grandes dans chaque cellule et la hauteur des cellules varie en fonction de la taille de l'image. Les performances de défilement sont correctes, mais peuvent parfois être saccadées.
J'ai trouvé ces conseils que j'ai trouvés sur le blog FieryRobot:
glassy-scrolling-with-uitableview
défilement plus vitreux avec vue modifiable
Quelqu'un a-t-il des conseils pour améliorer les performances de défilement uitableview?
UITableViewCell
drawRect:
si possible, évitez les sous-vues à tout prix (ou si vous avez besoin de la fonctionnalité d'accessibilité standard, la vue de contenu drawRect:
)UITableViewCell
opaque (il en va de même pour la vue du contenu si vous en avez un)UITableView
UIImage
sUITableViewCell
, n'utilisez pas de Nib, écrivez-le à la place dans le code. C'est beaucoup plus rapide que de charger des fichiers Nib.Le développeur derrière Tweetie a beaucoup écrit à ce sujet et a du code qui montre comment cela a été fait pour cette application. Fondamentalement, il préconise une vue personnalisée par cellule de tableau et la dessine manuellement (plutôt que de sous-visualiser avec Interface Builder, entre autres options).
défilement rapide en tweetie-avec-uitableview
En outre, Apple a mis à jour son propre exemple de code pour TableView dans ses didacticiels TableViewSuite (peut-être en réponse à cela?)
Le tueur de performances n ° 1 pour le défilement UITableView dessine des ombres sur n'importe quelle couche de vue de cellule, donc si les performances de défilement sont importantes, ne faites pas d'ombres à moins que cela ne ralentisse pas votre thread principal.
pensait que cela devait être dit car aucune des réponses acceptées ne faisait mention d'ombres et de calques. : +)
Tout problème avec les performances de défilement UITableView
peut être résolu en utilisant des techniques déjà décrites dans d'autres réponses. Cependant, les performances souvent lentes sont causées par quelque chose de intrinsèquement erroné ou répétitif.
Le fait que UITableView
réutilise les cellules, et le fait que chaque cellule peut avoir besoin de sa propre image - ensemble rend le bit de solution complexe. De la façon dont cela est résolu de manière générale, je résume ici les choses qui devraient être prises en charge:
[tableView reloaddata]
cellForRowAtIndexPath
, incluez du code qui définira les données (texte) à partir de l'objet de modèle de données correct du tableau.Pour éviter les problèmes, reportez-vous à ce tutoriel sur chargement paresseux des images dans la vue de table.