我正在制作一个扫描多页pdf文件的应用程序。我有一个链接的PDFView
和PDFThumbnailView
。第一次完成扫描时,我创建一个新的PDFDocument
并将其设置为PDFView
。然后,每当另一次扫描完成时,我就在PDFPage
中添加[pdfView document]
。
现在的问题是,无论何时添加页面,PDFView
或PDFThumbnailView
更新都不会显示带有多余页面的新文档。直到我放大或缩小,然后它们都更新以显示带有新页面的文档。
我现在拥有的临时解决方案(放大然后自动缩放)当然不是最好的解决方案。例如,当您已经放大文档并扫描新页面时,视图将自动缩放。我之前尝试过[pdfView setNeedsDisplay:YES]
,但这似乎不起作用。
这是扫描以NSData
到达的方法:
- (void)scannerDevice:(ICScannerDevice *)scanner didScanToURL:(NSURL *)url data:(NSData *)data {
//Hide the progress bar
[progressIndicator stopAnimation:nil];
//Create a pdf page from the data
NSImage *image = [[NSImage alloc] initWithData:data];
PDFPage *page = [[PDFPage alloc] initWithImage:image];
//If the pdf view has a document
if ([pdfView document]) {
//Set the page number and add it to the document
[page setValue:[NSString stringWithFormat:@"%d", [[pdfView document] pageCount] + 1] forKey:@"label"];
[[pdfView document] insertPage:page atIndex:[[pdfView document] pageCount]];
} else {
//Create a new document and add the page
[page setValue:@"1" forKey:@"label"];
PDFDocument *document = [[PDFDocument alloc] init];
[document insertPage:page atIndex:0];
[pdfView setDocument:document];
}
//Force a redraw for the pdf view so the pages are shown properly
[pdfView zoomIn:self];
[pdfView setAutoScales:YES];
}
有人知道我可以添加
PDFPage
并更新PDFView
而不弄乱PDFView
缩放状态的方法吗? 最佳答案
您需要手动调用:
- (void)layoutDocumentView
我想这不是手动调用的原因是允许将多个更改合并到一个更新中。
记录在案:
PDFView实际上包含几个子视图,例如文档
视图(实际绘制PDF的位置)和“遮罩视图”(可能
在PDF内容周围显示为灰色区域,具体取决于
缩放)。对PDF内容的更改可能需要对这些内容进行更改
内部视图,因此如果使用PDF,则必须显式调用此方法
工具包实用程序类,用于添加或删除页面,旋转页面或执行
其他影响可见布局的操作。
会从影响以下内容的PDFView方法中自动调用此方法
可见的布局(例如setDocument:,setDisplayBox:或zoomIn :)。
关于objective-c - 将PDFPage添加到PDFDocument时,PDFView不会更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21517685/