Вот код:
https://www.dropbox.com/s/o42wy36x4qhrbpt/PDFScroller.zip
Я взял образец кода WWDC 2010 PhotoScroller
, который реализует вложенный UIScrollViews
для масштабирования, внутри UIScrollView
для пейджинга,и подкачал то, что я думал, будет минимальным количеством кода, необходимого для отображения многостраничного PDF вместо изображений.
Это работает.Но на моем iPhone4 это медленно, около трех секунд, чтобы нарисовать первую страницу, и еще медленнее на моем iPod Touch.Я могу наблюдать, как рисуют отдельные плитки.Этот же PDF-файл уже открывается быстрее, без видимого рисунка плитки, в альтернативной реализации CATiledLayer
, которая у меня есть, которая просто использует один CATiledLayer
/ UIScrollView
и сенсорные события для изменения страниц.Я бы хотел использовать эту технику PhotoScroller
, это очень приятно.
Я наблюдал за ней с помощью CPU Sampler в Инструментах, и это не похоже на код рендеринга PDF, похоже, времязанялся потоками и обменом сообщениями.Я был бы признателен, если бы кто-то мог помочь указать, что этот пример делает, чтобы понести накладные расходы.
Спасибо,
Джим
Обновление 1: у меня былоПервоначально использовался метод класса TilingView
из примера кода определения
+ (Class) layerClass {
return [CATiledLayer class];
}
И затем рисование в - (void)drawRect:(CGRect)rect
, но переключился на явный подкласс CATiledLayer
в качестве первой попытки увидеть, будет ли он делатьРазница, но это не так, и поэтому я оставил код как есть для размещения здесь.Также в TilingView отсутствует утечка [tiledLayer release];
.