Подтвердить что ты не робот

Производительность CATiledLayer PDF неудовлетворительна на дисплее Retina iPad 3

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

В iOS 5.0 и более поздних версиях свойство tileSize произвольно зажато на 1024, что означает, что на экране сетчатки отображаются половину этого размера. Кто-нибудь нашел способ преодолеть это ограничение?

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

- (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