Просмотр PDF с горизонтальной прокруткой - PullRequest
6 голосов
/ 05 июля 2011

Я хотел бы получить несколько советов о том, как реализовать просмотр в формате PDF с горизонтальной прокруткой.

Я знаю, как реализовать PDF-ридер с помощью UIWebView, но только с вертикальной прокруткой.

Ответы [ 3 ]

4 голосов
/ 06 июля 2011

Я сделал это.Код был закрытым для платящего клиента, поэтому я не могу поделиться им напрямую, но основная идея заключается в том, чтобы написать:

  • Один подкласс UIView, который отображает одну страницу PDF,используя семейства функций CGPDFPageRef и CGPDFDocument* и CGContextDrawPDFPage.Для этого представления очень помогает возвращать [CATiledLayer class] из метода класса layerClass и правильно устанавливать свойства levelOfDetail и tileSize слоя.Мой также реализует sizeThatFits, чтобы вернуть размер страницы плюс небольшой водосточный желоб, и визуализирует тонкие тени по краям страницы PDF.

    Помните, что рисунок UIKit находится вверх ногами от рисунка CG;так что CGContextTranslateCTM(ctx, 0.0, layer.bounds.size.height); CGContextScaleCTM(ctx, 1.0, -1.0); перед рисованием.

  • Один подкласс UIView, содержащий и размечающий (и являющийся делегатом) UIScrollView в режиме подкачки (основной горизонтальный пейджер) и отдельный UIScrollViewдля каждой страницы, каждая из которых содержит одно из представленных выше представлений (для увеличения отдельных страниц). Вложенные представления прокрутки - это явно одобренный Apple способ сделать это.Этот вид должен будет выложить страницы так, как вы хотите;предположительно в виде одной длинной горизонтальной полосы, каждая из которых увеличена до подходящего размера.

    Если вам не нужно масштабировать страницу, вы можете пропустить вложенные виды прокрутки и расположить их непосредственно в горизонтальной прокрутке.

TL; DR: К сожалению, это не так просто, как бросить его в UIWebView;но это выполнимо, и простой подход работает.

1 голос
/ 18 октября 2012

Я нашел открытый проект с этой функцией

https://github.com/vfr/Reader

1 голос
/ 10 июля 2011

Я нашел открытый проект с этой функцией = D

https://github.com/iamruinous/Reader

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