我已将 SVGKit 库导入到我的项目中,我想加载我存储在 NSString 中的 svg 图像,如下所示:
<svg xmlns="http://www.w3.org/2000/svg" ....
</svg>
当我尝试通过
SVGKImage* newImage = [SVGKImage imageWithContentsOfURL:svgUrl];
我出错了,因为 url 是 nil,这很明显,因为它不是 URL,但是库中有什么方法可以使用吗?
你可以这样做:
NSData* svgData = [svgSource dataUsingEncoding: NSUTF8StringEncoding];
SVGKImage *svgImage = [SVGKImage imageWithData:svgData];
但是,我怀疑你应该做的是张的建议。在任何情况下,您都应该确保在下载数据时是在主线程之外进行的。
你需要从 URL 的字符串表示创建一个 NSURL 对象,所以:
NSString *strURL = "http://......";
NSURL *imageURL = [[NSURL alloc] initWithString:strURL];
SVGKImage *svgImage = [SVGKImage imageWithContentsOfURL:imageURL];
这有帮助吗?
使用 SVGKit 2.x,您可以使用SVGKLayeredImageView并从 URL 加载图像:(我在 Swift Xcode 7.1 中的示例代码)
转到 Identity Inspector 并将该视图的自定义类更改为 SVGKLayeredImageView (如果该类不可用并且您在此处看不到它,这意味着您没有导入与我相同版本的 SVGKit 或没有正确安装框架)
建立该视图的插座连接,然后你应该有
@IBOutlet 弱变量 svgImageView:SVGKLayeredImageView!
用法
if let url = NSURL(string: "http://your-svg-file-url"){
if url.pathExtension!.lowercaseString == "svg" {
svgImageView.image = SVGKImage(contentsOfURL: url)
}
}