基本上我想要做的就是将已经呈现的内容(使用CGContextDrawPDFPage()绘制到UIView的图形上下文中的PDF)复制到类似的UIView上,而无需重新渲染PDF。这个想法是,我可以在UIView上执行一个动画转换,然后以更高的精度重新渲染PDF。对于这两个UIViews,我都使用大于屏幕的CATiledLayer,以便在用户放大时更容易重新渲染PDF,如果这样做有任何区别的话。将UIView的上下文的位图内容复制到另一个UIView的位图内容
任何提示?我有点迷失在这里。
基本上我想要做的就是将已经呈现的内容(使用CGContextDrawPDFPage()绘制到UIView的图形上下文中的PDF)复制到类似的UIView上,而无需重新渲染PDF。这个想法是,我可以在UIView上执行一个动画转换,然后以更高的精度重新渲染PDF。对于这两个UIViews,我都使用大于屏幕的CATiledLayer,以便在用户放大时更容易重新渲染PDF,如果这样做有任何区别的话。将UIView的上下文的位图内容复制到另一个UIView的位图内容
任何提示?我有点迷失在这里。
假设你已经在图形环境中使用类似于以下
CGPDFDocumentRef document = CGPDFDocumentCreateWithURL (filename_url);
CGPDFPageRef page = CGPDFDocumentGetPage (document, pageNumber);
CGContextDrawPDFPage (context, page);
CGPDFDocumentRelease (document);
此代码将pdfView的内容保存到一个UIImage
UIGraphicsBeginImageContext(pdfView.bounds.size);
[pdfView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *pdfViewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
仍然需要重新渲染PDF,除非我始终将其渲染为图像,这应该具有相当大的开销。 – 2010-04-20 19:51:47
假设您已经在当前的图形上下文中呈现PDF,使用类似于我已经添加到上面的帖子的代码,使用较低的代码将不会重新渲染PDF。想象一下,就像拍摄桌面的截图一样。 – adam 2010-04-20 21:24:29
唉,我之前试过,它确实重新渲染PDF。可能是因为我正在使用CATiledLayer? – 2010-04-21 09:14:00
一些挖后,代码渲染的PDF页面看起来像我的layer.contents是一个CAImageProvider,它似乎有图像数据(至少它的分辨率看起来是正确的)。我不知道如何使用这个。 – 2010-04-20 11:22:24