Плохая производительность CATiledLayer на iPad Retina Display - PullRequest
27 голосов
/ 20 марта 2012

Я использую довольно простой код для отображения масштабируемого PDF в виде прокрутки, и он прекрасно работает на iPad 2 и оригинальном iPad.Но на iPad 3 это потрясающе медленнона дисплее сетчатки появляется половина этого размера.Кто-нибудь нашел способ преодолеть это ограничение?

Иначе, кто-нибудь нашел способ улучшить скорость CATiledLayer на iPad 3?

Ответы [ 2 ]

1 голос
/ 26 апреля 2012

Вы пробовали установить shouldRasterize на YES на слое?

0 голосов
/ 27 сентября 2012

Вы запускали профилировщик времени на этих розыгрышах и исключали ли вы возможность избыточных розыгрышей?

У меня был какой-то странный двойной рисунок, который легко найти с помощью:

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

Существует также множество настроек для игры:

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