J’ai une vue unique 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 décentes, mais peuvent parfois être saccadées.
J’ai trouvé ces astuces que j’ai trouvées sur le blog FieryRobot:
défilement vitreux avec vue-modifiable
défilement plus vitreux
Quelqu’un a-t-il des conseils pour améliorer les performances du défilement des vues?
UITableViewCell
de drawRect:
si possible les sous-vues à tout prix (ou si vous avez besoin de la fonctionnalité d’accessibilité standard, drawRect:
la vue de contenu drawRect:
UITableViewCell
(même chose pour la vue du contenu si vous en avez une) UITableView
comme recommandé par les exemples / documentation UITableView
UIImage
s UITableViewCell
, n’utilisez pas de Nib, écrivez-le plutôt 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 dispose d’un 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-visionner avec Interface Builder, entre autres options).
défilement rapide dans tweetie-with-uitableview
En outre, Apple a mis à jour son propre code exemple pour TableView dans ses didacticiels TableViewSuite (peut-être en réponse à cela?)
TableViewSuite
# 1 performance killer pour UITableView scrolling dessine des ombres sur n’importe quel calque de vue de cellule, donc si le défilement des performances est important, ne faites pas d’ombre à moins que cela ne ralentisse votre thread principal.
pensait que cela devait être dit car aucune des réponses acceptées ne mentionnait les ombres et les calques. : +)
Tout problème UITableView
performances de défilement UITableView
peut être résolu à l’aide de techniques déjà décrites dans d’autres réponses. Cependant, bien souvent, les performances médiocres sont causées par quelque chose de fondamentalement erroné ou de répétitif.
Le fait que UITableView
réutilise les cellules et le fait que chaque cellule puisse avoir besoin de sa propre image rend ensemble la solution complexe. De la façon dont le problème est résolu de manière générale, je résume ici les points à prendre en compte:
[tableView reloaddata]
cellForRowAtIndexPath
, incluez le code qui définira les données (texte) à partir de l’object de modèle de données correct du tableau. Pour éviter les problèmes, reportez-vous à ce tutoriel sur le chargement paresseux des images dans la vue de la table.