2010-09-30 32 views
1

J'ai fait un programme de rendu de texte en utilisant UIView et UITableViewController. Ce que j'ai fait est avant d'aller drawRect méthode, je calcule juste toute la hauteur des cellules ainsi que chaque début de texte & hauteur, largeur. Donc, je peux estimer la hauteur de la cellule approximativement et puis je dessine le texte.Comment accélérer et rendre les cellules lisses dans l'iPhone?

Je l'ai fait pour les deux mode portrait &. Mon programme ressemble à des mises à jour de Twitter. Lorsque l'utilisateur a changé en mode paysage, j'ai calculé les mêmes choses pour le mode paysage. La prochaine fois, je récupère simplement les données stockées pour le texte de dessin (Valide avant que l'application ne se ferme).

Maintenant, mon problème est, quand mes entrées sont moins, cela fonctionne bien. Mais pour l'entrée énorme dites 100 entrées, il faut un certain temps pour montrer le texte. De plus, le défilement de mon programme n'est pas très fluide. De plus, il n'y a pas de fuite dans mon application.

S'il vous plaît quelqu'un me suggérer la bonne façon de faire cette application et la rendre si lisse et plus rapide ...

Merci à l'avance, Rajkanth

+0

Ce fait un peu bizarre que vous utilisez déjà drawRect mais toujours lent. Pouvez-vous me montrer le code de calcul – vodkhang

Répondre

1

La réponse à cela est de minimiser tout calcul vous faire dans le rendu des cellules. Cela inclut tous les arrière-plans transparents. Pour obtenir le défilement le plus rapide, idéalement, vous auriez très peu d'éléments non opaques.

+0

Merci pour votre réponse. Vous avez dit de réduire les facteurs de calcul de la cellule. Comment est-ce possible? J'ai besoin de faire un habillage de caractères, d'envelopper les mots, de calculer la hauteur de chaque cellule avant de l'afficher, etc. J'ai utilisé la valeur opaque comme 1. J'ai besoin de faire autant de calculs pour afficher un paragraphe. Alors que dois-je faire? –

+0

Il y a plusieurs façons de le faire, mais la meilleure façon est de comprendre tout le contenu avant le rendu des cellules. De cette façon, lorsque les cellules sont rendues, il s'agit d'une simple recherche de mémoire pour les valeurs. – coneybeare

+0

La façon dont je l'atteins (entre autres choses) est à travers trois20. Dans trois20, vous configurez un objet appelé tableItem avant de rendre les cellules. En règle générale, tous les éléments seraient configurés et stockés. Puis quand il est temps de faire défiler, les cellules savent quelles méthodes appeler sur les éléments précalculés pour tirer l'information rapidement sans calcul. Les éléments sont généralement rendus dans le chargement de la vue, pendant la transition de navigation. – coneybeare