【发布时间】:2010-03-17 02:37:34
【问题描述】:
我正在覆盖自定义 UIView 中的 drawRect: 方法,并且正在做一些自定义绘图。一切进展顺利,直到我需要在上下文中绘制一个 PDF 资源(准确地说是矢量字形)。首先,我从文件中检索 PDF:
NSURL *pdfURL = [NSURL fileURLWithPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"CardKit.bundle/A.pdf"]];
CGPDFDocumentRef pdfDoc = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);
CGPDFPageRef pdfPage = CGPDFDocumentGetPage(pdfDoc, 1);
然后我创建一个与加载的 PDF 具有相同尺寸的框:
CGRect box = CGPDFPageGetBoxRect(pdfPage, kCGPDFArtBox);
然后我保存我的图形状态,这样我就不会搞砸了:
CGContextSaveGState(context);
然后我执行 CTM 的缩放+翻译,理论上翻转整个上下文:
CGContextScaleCTM(context, 1.0, -1.0);
CGContextTranslateCTM(context, 0.0, rect.size.height);
然后我缩放 PDF 以使其适合视图:
CGContextScaleCTM(context, rect.size.width/box.size.width, rect.size.height/box.size.height);
最后,我绘制 PDF 并恢复图形状态:
CGContextDrawPDFPage(context, pdfPage);
CGContextRestoreGState(context);
问题是没有任何可见的绘制。所有这些代码理论上都应该将 PDF 字形绘制到视图中,对吧?
如果我删除用于翻转上下文的比例+平移,它会完美绘制:它只是颠倒绘制。
有什么想法吗?
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch