27 votes

Les performances PDF de CATiledLayer sont médiocres sur l'écran Retina de l'iPad 3

Je suis une utilisation plutôt simple code pour afficher un zoom PDF dans un scrollview, et il a été fonctionne à merveille sur l'iPad 2 et l'iPad original. Mais c'est incroyablement lent sur l'iPad 3. Je sais que je pousse à plus de pixels, mais les performances de rendu est tout simplement inacceptable.

Dans iOS 5.0 et versions ultérieures, le taillecarreau propriété est arbitrairement fixé à 1024, ce qui signifie tuiles apparaître la moitié de cette taille sur l'écran retina. Quelqu'un a trouvé un moyen de contourner cette limitation?

Sinon, quelqu'un a trouvé un moyen d'améliorer la vitesse de l' CATiledLayer sur l'iPad 3?

1voto

Ashley Mills Points 10205

Avez-vous essayé de définir shouldRasterize sur YES sur le calque?

0voto

leo Points 2264

Avez-vous exécuté un profileur temporel sur ces tirages et avez-vous exclu la possibilité de tirages redondants?

J'ai eu un dessin double étrange, qui a été facilement trouvé en utilisant:

 - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context
{
    NSLog(@"draw %@", NSStringFromCGRect(CGContextGetClipBoundingBox(context)));
    // draw pdf
}
 

Il existe également une variété de paramètres pour jouer avec:

  • tiledLayer.levelsOfDetail = 2
  • tiledLayer.levelsOfDetailBias = 4
  • tiledLayer.tileSize = self.bounds.size
  • CGContextSetInterpolationQuality(context, kCGInterpolationLow)
  • CGContextSetRenderingIntent(context, kCGRenderingIntentDefault)
  • self.contentScaleFactor = 1.0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X