Zrobiłem to. Kod był prywatny za płatniczej klienta, więc nie mogę podzielić się nim bezpośrednio, ale podstawowa idea jest napisać:
Jedna podklasa UIView że renderuje jedną stronę PDF, używając CGPDFPageRef
i tym CGPDFDocument*
i CGContextDrawPDFPage
rodzin funkcji. Bardzo pomaga to widokowi zwrócić [CATiledLayer class]
z metody klasy layerClass
i odpowiednio ustawić właściwości levelOfDetail i tileSize warstwy. Kopalnia implementuje także sizeThatFits
, aby zwrócić rozmiar strony i małą rynnę, i wyświetla subtelny cień na krawędzi strony pdf.
Pamiętaj, że rysunek UIKit jest odwrócony z rysunku CG; więc przed malowaniem wykonaj CGContextTranslateCTM(ctx, 0.0, layer.bounds.size.height); CGContextScaleCTM(ctx, 1.0, -1.0);
.
Jeden UIView podklasy napełniania i układania (i jest delegatem) ą UIScrollView tryb przywołania (główny pagera poziomą), a jednostka UIScrollView na każdej stronie, z których każdy zawiera jeden z wymienionych aspektów (na powiększanie się indywidualnie strony.) Zagnieżdżone widoki przewijania to wyraźnie poparty przez Apple sposób robienia tego typu rzeczy. Ten widok będzie musiał ułożyć strony w taki sposób, w jaki chcesz je mieć; przypuszczalnie w jednym długim poziomym pasku, z których każdy jest powiększony do rozmiaru dopasowanego.
Jeśli nie potrzebujesz powiększania strony, możesz pominąć zagnieżdżone widoki przewijania i ułożyć widoki strony bezpośrednio w poziomym przewijaku.
TL; DR: Niestety nie jest to tak proste, jak wyrzucenie go w UIWebView; ale jest to wykonalne, a proste podejście działa.