我试图显示水平放置的单页PDF,以便可以通过向左或向右滑动来浏览页面.当然我需要缩放页面.
我UIWebView在一个UIScrollViewer启用了分页的容器中使用s 实现了它.UIWebView用作PDF查看器并UIScrollView处理页面更改.但是这个实现并不是一个好的,它使用了太多的内存,所以我决定使用Apple ZoomingPDFViewer而不是UIWebView.
我的原始代码UIWebView看起来像这样:
for (int i=0; i<n; i++)
{
CGRect frame;
frame.origin.y = 0;
frame.origin.x = self.scrollviewer.frame.size.width * i;
frame.size = self.scrollviewer.frame.size;
UIWebView *pageViewer = [[UIWebView alloc] initWithFrame:frame];
pageViewer.scalesPageToFit = TRUE;
pageViewer.multipleTouchEnabled = TRUE;
[self.scrollviewer addSubview:pageViewer];
NSURL *url = [NSURL URLWithString:address];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
[pageViewer loadRequest:req];
}
self.scrollviewer.contentSize = CGSizeMake(nPages * self.scrollviewer.frame.size.width, self.scrollviewer.frame.size.height);
Run Code Online (Sandbox Code Playgroud)
这种方法很完美,但是当我有超过25页时它很慢并且Apple不建议使用UIWebView内部UIScrollView或UITableView因为触摸事件可能会产生意外结果.
所以我想改变UIWebView,以ZoomingPDFViewer在苹果的例子给出.我的新代码ZoomingPDFViewer看起来像这样:
for (int i=0; i<n; i++)
{
CGRect frame;
frame.origin.y = 0;
frame.origin.x = self.scrollviewer.frame.size.width * i;
frame.size = self.scrollviewer.frame.size;
PDFScrollView *pageViewer = [[PDFScrollView alloc] initWithFrame:frame];
[self.scrollviewer addSubview:pageViewer];
NSURL *url = [NSURL URLWithString:address];
CGPDFDocumentRef PDFDocument = CGPDFDocumentCreateWithURL((__bridge CFURLRef)url);
CGPDFPageRef PDFPage = CGPDFDocumentGetPage(PDFDocument, 1);
[(PDFScrollView *)pageViewer setPDFPage:PDFPage];
CGPDFDocumentRelease(PDFDocument);
}
self.scrollviewer.contentSize = CGSizeMake(nPages * self.scrollviewer.frame.size.width, self.scrollviewer.frame.size.height);
Run Code Online (Sandbox Code Playgroud)
此代码向我显示我的PDF页面,我可以在页面之间滑动,但我无法放大页面.
我不知道该怎么办.你能帮助我吗?
我找到了解决方案.
当你创建一个问题是UIScrollView编程它设置minimumZoomScale和maximumZoomScale1.0默认.所以实际上我的代码工作正常,但我不知道它是否有效,因为它没有放大或缩小.
所以我在我的代码中添加了两行代码!这是我的代码中的更改
PDFScrollView *pageViewer = [[PDFScrollView alloc] initWithFrame:frame];
pageViewer.minimumZoomScale = 0.2;
pageViewer.maximumZoomScale = 5.0;
[self.scrollviewer addSubview:pageViewer];
Run Code Online (Sandbox Code Playgroud)
当我插入两条线时,它可以工作,但我能够无限放大或缩小.我想以最大比例缩放5.所以我改变scrollViewDidEndZooming了文件中给出的方法PDFScrollView.m
Apple附带的默认代码ZoomingPDFViewer如下所示:
// Set the new scale factor for the TiledPDFView.
_PDFScale *= scale;
// Calculate the new frame for the new TiledPDFView.
CGRect pageRect = CGPDFPageGetBoxRect(_PDFPage, kCGPDFMediaBox);
pageRect.size = CGSizeMake(pageRect.size.width*_PDFScale, pageRect.size.height*_PDFScale);
Run Code Online (Sandbox Code Playgroud)
更改后看起来像:
// Set the new scale factor for the TiledPDFView.
_PDFScale *= scale;
self.minimumZoomScale *= 1 / scale;
self.maximumZoomScale *= 1 / scale;
// Calculate the new frame for the new TiledPDFView.
CGRect pageRect = CGPDFPageGetBoxRect(_PDFPage, kCGPDFMediaBox);
pageRect.size = CGSizeMake(pageRect.size.width*_PDFScale, pageRect.size.height*_PDFScale);
Run Code Online (Sandbox Code Playgroud)
现在它有效.
| 归档时间: |
|
| 查看次数: |
646 次 |
| 最近记录: |