iPhone可以直接渲染矢量图形文件吗?支持哪些格式?

时间:2010-03-01 20:09:40

标签: iphone vector-graphics file-type

是否可以在iPhone上渲染矢量图像文件的方式与渲染位图(png,jpeg)文件的方式相同?我尝试过eps和pdf文件,两者似乎都不起作用 - 它们在Interface Builder中正确显示但在运行时不显示。

控制台输出一条消息,沿着'无法加载“image.pdf”图像从包含标识符“com.yourcompany.project”中的nib引用“

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

5 个答案:

答案 0 :(得分: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);
}

当然是SVG的UIWebView。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

是的,它支持SVG。

您可以将矢量文件转换为SVG,并使用像Raphael这样的库转换为javascript来渲染它们。我在拉斐尔的网站具有类似闪存的功能,它们在iPhone上完美呈现 - 这是网络标准的好处!

答案 4 :(得分:1)

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