2012年3月14日水曜日
UIWebViewでPDF指定ページへスクロール
//NSURLからPDFDocumentを作成
NSURL *pdfURL;
//ARC環境ではキャストに"__bridge"を付加する。
CGPDFDocument pdf = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfURL);
//1ページ目のPageオブジェクトの取得
CGPDFPageRef page = CGPDFDocumentGetPage(pdf, 1);
//ページサイズ取得
CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
float pageHeight = pageRect.size.height;
float pageWidth = pageRect.size.width;
//PDFの横幅をディスプレイの横幅に納める倍率
float fitScale = self.frame.size.width / pageRect.size.width;
//ページ数の取得
int numberOfPages= CGPDFDocumentGetNumberOfPages(pdf);
//UIWebViewをPDFの指定ページへスクロール
UIWebView *webView = someUIWebView;
UIScrollView *scrollView = webView.scrollView;
float x = scrollView.contentOffset.x;
float y = scrollView.contentSize.height/numberOfPages*pageNumber;
CGPoint point = CGPointMake(x, y);
[scrollView setContentOffset:point animated:YES];
参照:ZoomingPDFViewer
基本的には上記の方法でスクロールできるのですが、UIWebViewのPDFロードが非同期で行われるため、ロード直後(UIWebViewのデリゲートメソッドのwebViewDidFinishLoad:)ではスクロールビューのcontentSizeがまだ初期値のままの場合があります。
もし表示直後に特定ページにスクロールしたいような場合は注意が必要です。
参照:UIWebViewの初期ズーム倍率設定
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿