2012-04-03 17 views
6

Tengo 180 UILabels (subvistas de UITableViewCells) en una aplicación de iPad con 155 ancho X 155 de altura para cada UILabel, y cada uno contiene una gran cantidad de texto Unicode (idioma árabe), cuando me desplazo en el TableView se cuelga durante 1 segundo y luego sigue desplazándose normalmente, esto sucede con cada intento de desplazamiento por parte del usuario y esto se prueba en el dispositivo iPAD2.Demasiados UILabels con texto Unicode

Sin embargo, cuando cambié el texto al idioma inglés (también una gran cantidad de texto en inglés), el TableView no se cuelga y se desplaza normalmente.

¿alguien tuvo una idea sobre cómo resolver este problema con texto Unicode?

muchas gracias de antemano.

EDIT:

el código es grande para caber aquí, por lo que en breve, se crea cada UILabel con un bucle como este: [[[UILabel alloc] initWithFrame:CGRectZero] autorelease]; en cellForRowAtIndexPath método, entonces jugar con el marco más tarde en el mismo método de acuerdo con la interfaz orientación, después de eso agrego cada UILabel a la celda de esta manera: [cell.contentView addSubView:myLabel];. cada celda contiene 4 de estos 'UILabels', por lo que tengo un total de 45 celdas, nada más, código simple y directo.

+3

No conozco la respuesta directa pero, en cualquier caso, intento optimizar su aplicación para que sirva las subvistas de 'UITableViewCells' lo más rápido posible ya que existe otra amenaza potencial. Si el usuario se desplaza tan rápido que la celda se desplaza antes de que se pueda procesar su contenido, toda su 'UITableView' se vaciará y no hay forma de recuperarla sin volver a cargar toda la vista. – MrTJ

+1

el problema, supongo, se encuentra dentro del tamaño del texto Unicode, aún no se pudo encontrar una forma de reducir este tamaño antes de asignar el texto a la etiqueta – JAHelia

+8

¿Crees que crear una vista con 180 etiquetas cargadas con textos enormes es la mejor? enfoque en el diseño de aplicación de teléfono inteligente sensible y despejada? – serb

Respuesta

0

Hay muchas maneras de optimizar su código:

Un cheque si su aplicación no tiene fugas. Correcto lanzamiento de etiquetas. Usa la reutilización de las celdas. No sé si estás usando eso o no. Dado que cada vez que se desplaza su cellForRowAtIndexPath se llama al método delegado.

In case you dont know about reusability try this link.

+0

He usado dequeueReusableCell sin ningún beneficio en este caso – JAHelia

+0

La asignación de memoria será mucho más rápida que el repintado real. – Sulthan

+0

me puedes mostrar tu código. Debido a que la carga de varias imágenes se puede optimizar hasta cierto punto, así que podemos optimizar la carga de texto en las etiquetas – DivineDesert

1

El uso de Unicode no debe ser el problema aquí, ya que hará que a velocidades similares a cualquier otro texto.

Posiblemente haya algunos problemas que están ralentizando su código. En primer lugar, debe intentar utilizar la reutilización de células nativas de UITableView, agregar las etiquetas a UITableViewCell y luego quitarlas de la cola con WitSusableIdentifier. Solo debe generar sus etiquetas cuando ese método devuelva nada y debe crear una nueva UITableViewCell (no está claro desde la pregunta original si ya lo hace).

Otra cosa que puede hacer después de esto para asegurarse de que la mayor cantidad de sus vistas sea lo más opaca posible para acelerar la composición. Instruments incluye una opción para matizar vistas no opacas para facilitar esto.

+0

dequeueWithResusableIdentifier se ha utilizado pero sin ninguna diferencia marcada, y como mencioné en la pregunta, tableView se desplaza normalmente cuando el texto es inglés, y anormalmente cuando el texto es Unicode – JAHelia