Aquí está el código:¿Por qué este código CATiledLayer/PDF es lento?
https://www.dropbox.com/s/o42wy36x4qhrbpt/PDFScroller.zip
tomé el 2010 Código PhotoScroller
muestra de la WWDC que implementa anidada UIScrollViews
para el zoom, dentro de un UIScrollView
para paginación y cambiarse por lo que pensé que sería mínima cantidad de código necesario para mostrar un PDF de varias páginas en lugar de imágenes.
Funciona. Pero es lento en mi iPhone4, unos tres segundos para pintar la primera página, e incluso más lento en mi iPod Touch. Puedo verlo pintando las fichas individuales. Este mismo PDF ya se abre más rápidamente, sin un dibujo de mosaico visible, en una implementación alternativa CATiledLayer
que tengo que simplemente usa un solo CATiledLayer
/UIScrollView
y toca eventos para cambiar páginas. Me gustaría utilizar esta técnica PhotoScroller
, es muy agradable.
Lo vi con la muestra de la CPU en instrumentos, y no parece ser el código de procesamiento de PDF, parece que el tiempo se tarda en enhebrar y enviar mensajes. Agradecería que alguien pudiera ayudar a señalar qué está haciendo esta muestra para incurrir en gastos generales.
Gracias,
Jim
Actualización 1: Había utilizado originalmente la técnica TilingView
clase desde el código de ejemplo de definir
+ (Class) layerClass {
return [CATiledLayer class];
}
Y luego el dibujo en - (void)drawRect:(CGRect)rect
pero cambió a la subclase CATiledLayer
explícita como primer intento para ver si marcaría la diferencia, pero no fue así, y así que dejé el código como está para publicar aquí. También hay una pérdida [tiledLayer release];
faltante en TilingView.
¿Se las arregló para encontrar una solución? Estaba trabajando en lo mismo. –
Sí, aumentar el tamaño del mosaico mejora el rendimiento significativamente. – jbm
Entendido, acaba de agregar una nueva línea en el código: tiledLayer.tileSize = CGSizeMake (512, 512); Funcionó muy bien! Gracias. –