2013-01-03 5 views
-1

Je développe une application iPhone similaire à Facebook, mais à des fins différentes. Je vais avoir un tableau de données pour chaque ligne UITableView ie contenu, photos, no.of aime, commentaires, titre etc. Je vais avoir une cellule personnalisée, qui hérite UITableviewcell, dans lequel j'ai créé tous mes objets d'interface utilisateur comme UIIMageView, UILabel, UIButton etc. Tout en faisant défiler mon UITableView je vais nourrir mes données à cette cellule personnalisée et cela fonctionne très bien.UITableView vitesse de défilement

Mon problème est la vitesse de défilement!

Chaque fois que je défile, il est frappé et le défilement est lent. Toutes mes affectations de composants d'interface utilisateur sont effectuées dans le thread principal.

Est-il possible d'augmenter la vitesse de défilement ou d'attribuer une valeur à mes composants de l'interface utilisateur dans un thread séparé?

+0

double possible de [UITableView avec des rouleaux images très lentement] (http://stackoverflow.com/questions/12703297/uitableview-with-images- scrolls-very-slow) – Patrick

Répondre

2

C'est le problème, All my UI components assignment are done in main thread. !!

Le fil principal ne doit pas être utilisé pour aller chercher des URL ou d'autres ressources. Cela affectera l'expérience de l'utilisateur. La récupération des URL d'image, etc., doit être effectuée dans un thread d'arrière-plan séparé, puis lorsque le téléchargement est terminé, mettez à jour le thread principal avec les données d'image. Cela devrait résoudre votre problème.

également comprendre quelles sont les tâches s'effectuées dans thread principal et voir ceux qui ne sont pas l'interface utilisateur liés, déplacer ces tâches à des fils de fond ...

Lazy load images in UITableViewCell

0

Vous pouvez le faire de la manière suivante:

1) Prendre une cellule de table personnalisée. (pas nécessaire, mais mieux pour un code recherché et optimisé).

2) Implémenter LazyLoading pour l'image dans la cellule.

Le chargement paresseux est un bon moyen pour accélérer votre défilement et optimiser la mémoire.

Vous obtiendrez démo prêt pour Lazy Loading dans la vue de la table et Apple fournit la même chose.

Cela va résoudre votre problème.

Bravo et bonne programmation!

0

Ce problème est dû au téléchargement d'images. Les cellules du tableau sont créées lorsque vous faites défiler la table et que d'autres cellules sont libérées. Lorsque les cellules sont créées, elles téléchargent l'image pour cette cellule et c'est la raison pour laquelle le thread principal a fait une pause à ce moment. Lorsque l'image est téléchargée, elle passe à la cellule suivante.

Vous devez télécharger des images dans un autre fil de discussion. Un exemple de code sur developers.apple.com est déjà fourni, veuillez le vérifier. Je pense que ça t'aide.

sample project code of lazy Loding

+0

J'ai arrêté le chargement des images.Maintenant seul le contenu est défini, ainsi que le cadre de réglage (CGRect) pour mes composants de l'interface utilisateur.Même alors il affecte ma vitesse de défilement – vishnu

+0

Vitesse de défilement il y a une grande quantité de données qui sont chargées sur la cellule. Pls charge les données sur la cellule dans un nouveau thread séparé pas dans le thread principal. Vous pouvez également mettre en file d'attente de multiples tâches –

0

Essayez liens ci-dessous pour créer le chargement paresseux tableview, qui fera de votre défilement tableview lisse

https://github.com/enormego/EGOImageLoading

http://developer.apple.com/library/ios/#samplecode/LazyTableImages/Introduction/Intro.html

Bonne programmation !!!!

+0

J'ai arrêté de charger des images.Maintenant seulement les contenus ont été réglés, ainsi que le cadre de réglage im (CGRect) pour mes composants d'interface utilisateur. Même alors, cela affecte ma vitesse de défilement. – vishnu

0

Je ne sais pas si j'ai réellement obtenu ce que vous demandiez, mais quand vous faites défiler votre vue de table, est-ce que cela semble être en retard? à cause de l'extraction de données?

Essayez ceci: https://github.com/rs/SDWebImage

Les instructions sont très faciles à suivre et à comprendre .. C'est ce que je faisais quand j'essaie de faire mes flux Youtube (avec des images, des titres vidéo, la description de vide, la date affichée, etc.) . Espérons que cela peut vous aider

Questions connexes