5

是否可以像渲染位图(png、jpeg)文件一样在 iPhone 上渲染矢量图像文件?我尝试过 eps 和 pdf 文件,但似乎都不起作用——它们在 Interface Builder 中正确显示,但在运行时不显示。

控制台输出一条消息,内容为“无法加载从包中带有标识符“com.yourcompany.project”的 nib 引用的“image.pdf”图像

我对此的所有搜索都讨论了使用 OpenGL 等绘制矢量文件。这是唯一的方法吗?由于没有提到矢量文件支持,我不确定我的文件是否因为文件问题(我尝试过不同的版本)而没有被加载,或者因为它们不受支持。

4

5 回答 5

4

可以使用 Core Graphics 原生渲染 PDF 图像,也可以创建它们。像这样的东西:

void DrawPDF (CGContextRef context, NSString *name)
{
    NSURL *url = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: name ofType: @"pdf"]];

    CGPDFDocumentRef doc = CGPDFDocumentCreateWithURL((CFURLRef)url);
    CGPDFPageRef page = CGPDFDocumentGetPage(doc, 1);

    CGRect box = CGPDFPageGetBoxRect(page, kCGPDFCropBox); //kCGPDFArtBox);
    CGContextDrawPDFPage(context, page);

    CGPDFDocumentRelease(doc);
}

UIWebView 当然适用于 SVG。

于 2010-06-28T17:29:45.757 回答
2

没有像 PNG 和 JPEG 那样直接支持矢量图形格式。任何矢量图形渲染都将以编程方式完成,即使用 Quartz 绘图调用来描边和填充路径对象。

于 2010-03-02T23:48:10.577 回答
1

您可以使用http://www.codeautomat.com/之类的东西将 SVG 文件转换为 Core Graphics Objective-C 代码。

于 2012-12-21T22:05:45.093 回答
1

PDF 可以通过 UIWebView 加载。如果您需要更多控制,您可以使用 Quartz 2D 来渲染 PDF:Quartz2D

于 2010-03-01T21:50:06.990 回答
1

是的,它支持 SVG。

您可以使用 Raphael 之类的库将矢量文件转换为 SVG 并通过转换为 javascript 来呈现它们。我的基于 Raphael 的网站具有类似 Flash 的功能,并且它们可以在 iPhone 上完美呈现——这是网络标准的好处!

于 2010-03-03T00:35:56.483 回答