2010-07-01 7 views
0

J'ai un UITableView groupé avec quelques grandes images. Cependant, les performances de défilement sont assez médiocres (note: c'était excellent avant la mise à niveau iOS 4, maintenant c'est très nerveux). J'ai lu que l'utilisation de drawRect au lieu d'ajouter des sous-vues à la cellule pourrait améliorer les performances.Comment puis-je utiliser drawRect pour charger une image dans un UITableView?

Première question: est-ce vrai?

Deuxième question: Si cela va augmenter les performances, comment puis-je l'implémenter? J'ai regardé l'exemple de code exemple UITableViewSuite # 5 qui fait ceci, mais j'ai beaucoup de difficulté à adapter leur code pour travailler avec mon projet. Y a-t-il d'autres bons exemples de comment faire cela?

Merci pour l'aide!

Répondre

1

Oui c'est très vrai.

Fondamentalement, ce que vous voulez faire est de mettre en œuvre un UIView personnalisé pour la vue du contenu de vos UIImageViewCells. Dans cette vue personnalisée, vous implémentez drawrect pour extraire votre cellule.

Il existe une vidéo de session fantastique de la WWDC 2009 qui le démontre. Je crois que la vidéo est maintenant disponible pour tous les utilisateurs du programme pour développeurs iPhone. Je vais éditer cette réponse si IO peut trouver le lien. Le gain de performance le plus important est dû au fait qu'avec le dessin personnalisé, la vue tabel n'a pas besoin de combiner plusieurs couches ensemble. Si la lenteur du défilement est due à l'utilisation de grandes images, cela ne vous aidera peut-être pas beaucoup. Je ferais en sorte que vos images ne soient pas agrandies ou réduites, et que vous les chargiez paresseusement. Ne chargez pas les images lorsque la vue de la table est défilée rapidement - cela entraînera des pertes de performances.