Вложенные UIScrollViews PDF-файлов - равномерное масштабирование - PullRequest
0 голосов
/ 02 апреля 2012

Я пытаюсь получить UIScrollView, который содержит несколько UIScrollViews PDF-файлов.

Та же идея, что и у этого представления в App Store (только с PDF-файлами и возможностью масштабирования): App Store Screenshot Viewer

У меня проблемы с настройкой масштаба для правильной работы.Как я могу сделать так, чтобы они одновременно масштабировались?

Как этого добиться, если я могу вернуть только один вид из этого метода:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

Спасибо!

Ответы [ 2 ]

5 голосов
/ 16 апреля 2012

Посмотрите видео WWDC 2011, особенно "Advanced ScrollView Techniques" Сессия 104 и, если вам нравится 104 Сессия 2010 тоже.Они оба обрабатывают масштабирование и прокрутку изображений.Принятие просмотра в формате PDF (из другого учебника) не должно иметь большого значения.

В вашем методе viewForZoomingInScrollView: вы можете вызвать другой scrollView и программно установить масштаб увеличения

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    if (scrollView == firstSV) {
        return viewForFirstScrollView;
    } else {
        return viewForSecondScrollView;
    }
}

- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    firstSV.zoomScale = secondSV.zoomScale;
    // and the other way if you can zoom the second scrollView too
}
2 голосов
/ 17 апреля 2012

Вы должны вернуть контейнер UIView в метод делегата viewForZoomingInScrollView:.В этом контейнере вы должны поместить все ваши PDF-представления бок о бок, как изображения.Теперь при увеличении вид контейнера будет увеличен вместе с его содержимым.Бум, готово.

За исключением того, что вам нужно создать масштабируемое представление PDF и убедиться, что вы не загружаете слишком много страниц одновременно, чтобы не использовать слишком много памяти.Вот тогда это становится непросто.

Создание масштабируемого представления PDF означает либо создание представления, содержащего изображение, которое вы будете визуализировать с помощью PDFKit , и обновление при каждом увеличении (представление с прокруткой)делегат говорит вам об этом), или вам придется использовать CATiledLayer для отображения страниц PDF в виде плиток, экономии памяти и повышения производительности.

Не загружая слишком много страниц, вам придется добавитьи удалите ваши представления PDF-страниц в / из представления контейнера, когда прокручивается представление прокрутки.

Я сделал это и для клиента, и на это уходит целая вечность, чтобы стать правым и без ошибок (по крайней мере, около 3 недель, если выне знаком с представлением прокрутки или PDFKit).См. этот вопрос о переполнении стека , чтобы начать, если вам хочется его построить.

Другой вариант - купить лицензию PSPDFKit , стоимость которой составляет 800 долларов США и около 2 часов.интеграции, чтобы заставить его работать в вашем приложении.После того, как я сам построил PDF-ридер, я бы выбрал второй вариант.Это сэкономит вам время и деньги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...