Я сделал это.Код был закрытым для платящего клиента, поэтому я не могу поделиться им напрямую, но основная идея заключается в том, чтобы написать:
Один подкласс 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;но это выполнимо, и простой подход работает.