Пример яблока ZoomingPDFViewer - PullRequest
1 голос
/ 16 июня 2011

Я пытаюсь понять пример кода Apple для ZoomingPDFViewer. Вот несколько вопросов, которые у меня есть в моем понимании того, как это работает в моей голове. Я не совсем уверен, правильно ли я понимаю. Ссылка для их кода находится по адресу: http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html

(1) CATiledLayer используется для представления PDF при разных уровнях масштабирования. Я предполагаю, что это то, что этот класс используется для просмотра ссылки на класс. Вы когда-нибудь использовали бы что-нибудь еще помимо этого класса для функции масштабирования?

(2) в initWithFrame для TiledPDFView они делают: tiledLayer.tileSize = CGSizeMake(512.0, 512.0); Является ли tileSize размер плиток, которые составляют все изображение? Если так, то почему такой большой размер?

(3) Как работает oldPDFView и pdfView? Например, какая из них находится на разных этапах увеличения, и когда они меняются местами. Мне трудно понять поток логики. Спасибо.

1 Ответ

2 голосов
/ 17 июня 2011

(1) Если вам не требуется, чтобы уровень детализации изменялся для разных уровней масштабирования, или если PDF-файл загружается достаточно быстро, чтобы не допустить рисования нескольких плиток за раз, обычный UIView с обычным CALayer будет отлично работает Например, если вы отображаете изображение вместо PDF, и изображение загружается достаточно быстро, чтобы не вызывать снижения производительности, вам не понадобится асинхронная загрузка, которую обеспечивает CATiledLayer. Образец PhotoScroller использует как плиточный, так и не мозаичный подходы, если вы хотите сравнить их.

(2) Атрибут tileSize изменяет размер блоков, на которые должен быть разбит слой. Вы можете установить это на то, что вы хотите. 512x512 на самом деле не такой уж большой, особенно если у вас большие размеры PDF. По умолчанию 256x256.

(3) Каждый раз, когда вы начинаете масштабирование, oldPDFView удаляется и отпускается. Затем pdfView назначается oldPDFView. Когда масштабирование заканчивается, создается новый pdfView с изменением масштаба и добавляется поверх старого. Если новый масштаб увеличивается, новый pdfView будет отображен с более высоким уровнем детализации. Это позволяет вам увеличивать глубину и глубину PDF. MaximumZoomScale и минимальный ZoomScale ограничивают только то, насколько вы можете увеличить с отдельным жестом.

...