使用SVGKit加载SVG文件

时间:2012-08-31 09:15:22

标签: iphone ios ipad svg rendering

我是iOS新手,我正在尝试使用SVGKit在我的应用中呈现svg文件。我想从URL加载svg文件,但我无法正常工作。我收到以下错误:

  

线程1:EXC_BAD_Access(代码= 2,地址= 0x0)

在以下行:SVGDocument.m文件中的NSLog(@"[%@] SVGKit Parse error: %@", [self class], *error);。 我试图通过使用已经存在的SVGPad示例实现从URL加载文件,该示例完美地工作并加载图片但不加载URL。我使用此代码从URL加载图片:

NSString *urlString = [NSString stringWithFormat:@"http://upload.wikimedia.org/wikipedia/commons/6/66/Blank_Map-Africa.svg"];
NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
SVGDocument* svgDocument = [SVGDocument documentFromURL:url];
self.contentView = [[[SVGView alloc] initWithDocument:svgDocument] autorelease];

此外,我尝试创建和我的简单应用程序,使用以下代码从本地文件加载十个简单的图片:

SecondViewController *vc = [[SecondViewController alloc] init];
NSString* svgFilename = [@"/Users/XCode Projects/SVGLink/Beastie" stringByAppendingPathExtension:@"svg"];
SVGDocument *svgDocument = [SVGDocument documentWithContentsOfFile:svgFilename];
 vc.view = [[SVGView alloc] initWithDocument:svgDocument];
[self.window setRootViewController:vc];

我得到的只是这个错误:[SVGDocument] DEBUG INFO:设置文档viewBox = {{0,0},{340.961,377.75}}

有人可以解释一下我在哪里犯这个错误吗?

我使用了这些版本的SVGKit: https://github.com/SVGKit/SVGKit/

谢谢, 莉莉

修改:

这个SVG工具包版本https://github.com/meric/SVGKit完全适用于从url链接加载.svg文件但我仍然从文件解析错误,如脚本和其他东西无法识别。 UIWebView中的相同文件完美显示。我想转移到SVG解析器的唯一原因是因为在旋转时UIWebView和SVG图移动了几步,我找不到修复那个的方法。

1 个答案:

答案 0 :(得分:2)

PocketSVG将允许您显示和操作SVG文件的行。

PocketSVG *myBezier = [[PocketSVG alloc] initFromSVGFileNamed:@"BezierCurve1-iPad"];    
UIBezierPath *myPath = myBezier.bezier;

CAShapeLayer *myShapeLayer = [CAShapeLayer layer];
myShapeLayer.path = myPath.CGPath;

[self.view.layer addSublayer:myShapeLayer];