2010-08-11 7 views
0

Je suis en train de développer une application qui m'oblige à afficher de nombreuses chaînes de texte dans des cellules de tableau. Actuellement, j'utilise une cellule de vue de table par défaut avec environ 14 UILabels ajoutés. La moitié de ces étiquettes contient du texte statique qui ne sera pas modifié, tandis que l'autre moitié contient des données dynamiques qui doivent être mises à jour lorsque la table est défilée. Comme mes clients se plaignent que la table est à la traîne, je me demande s'il existe une façon plus optimisée d'afficher les données et d'améliorer les performances de défilement. Par exemple, les cellules du tableau seraient-elles plus rapides lorsque la table défilerait si le texte fixe était rendu directement sur la vue, au lieu d'être contenu dans UILabels? Quelles autres méthodes puis-je utiliser pour améliorer les performances de défilement?La méthode la plus rapide pour rendre une cellule de vue de table?

+0

Comment exactement sont le texte des cellules dynamiques est-il récupéré? Envoyez-vous une demande distincte pour chaque cellule ou envoyez-vous simplement une requête qui renvoie 100 lignes de données que vous formatez ensuite? – domino

+0

J'envoie une requête, qui récupère environ 20-50 entrées au format xml. J'affecte ensuite les valeurs à la cellule dans cellForRowAtIndexPath avec les entrées. – futureelite7

Répondre

1

Les problèmes de performance dans le défilement de la vue tabulaire peuvent être causés par un certain nombre de problèmes. Par exemple:

  • Assurez-vous que les UILabel s sont opaques pour éviter le mélange. (Vous pouvez sélectionner l'option de couches de couleurs mélangées dans l'instrument Core Animation pour vérifier cela).
  • Assurez-vous du recyclage des piles de vue de la table à l'aide dequeueReusableCellWithIdentifier:

Il pourrait être utile si vous pouvez publier votre mise en œuvre de tableView:cellForRowAtIndexPath:

+0

Oui, j'ai des UILabels transparents. Est-ce que le fait de changer les UILabels en opaque améliorera beaucoup les performances? (Et oui, je réutilise déjà uitableviewcells déjà.) – futureelite7

0

en plus à la réponse de anshuchimala je vous recommande d'enlever les étiquettes statiques et l'intégrer dans un UIImageVie que vous utilisez dans votre tableviewcell en tant qu'image de fond. En dehors de cette opacité (comme mentionné par anshuchimala) est une grande performance bloquant, mais aussi l'utilisation extensive de NSDateFormatter instances peuvent considérablement diminuer vos performances (en particulier les instantion des cas NSDateFormatter besoin de beaucoup de puissance)

+0

Salut, malheureusement, j'ai besoin de localiser les chaînes, ce qui signifie que je ne peux pas simplement les inclure dans des images statiques. En outre, les images de chaque cellule ne prendront-elles pas plus de place? – futureelite7

+0

Les images seront mises en cache, iOS ne conserverait qu'une seule instance de l'image en mémoire (pour autant que je sache: D). vous pourriez cependant faire des versions localisées de votre image de fond. – samsam

Questions connexes