0

我已将 SVGKit 库导入到我的项目中,我想加载我存储在 NSString 中的 svg 图像,如下所示:

<svg xmlns="http://www.w3.org/2000/svg" ....
</svg>

当我尝试通过

SVGKImage* newImage = [SVGKImage imageWithContentsOfURL:svgUrl];

我出错了,因为 url 是 nil,这很明显,因为它不是 URL,但是库中有什么方法可以使用吗?

4

3 回答 3

0

你可以这样做:

NSData* svgData = [svgSource dataUsingEncoding: NSUTF8StringEncoding];
SVGKImage *svgImage = [SVGKImage imageWithData:svgData];

但是,我怀疑你应该做的是张的建议。在任何情况下,您都应该确保在下载数据时是在主线程之外进行的。

于 2014-06-10T08:35:43.393 回答
0

你需要从 URL 的字符串表示创建一个 NSURL 对象,所以:

NSString *strURL = "http://......";

NSURL *imageURL = [[NSURL alloc] initWithString:strURL];

SVGKImage *svgImage = [SVGKImage imageWithContentsOfURL:imageURL];

这有帮助吗?

于 2014-06-10T08:33:08.730 回答
0

使用 SVGKit 2.x,您可以使用SVGKLayeredImageView并从 URL 加载图像:(我在 Swift Xcode 7.1 中的示例代码)

  1. 在 Interface Builder 中,将“视图”拖到场景中。
  2. 转到 Identity Inspector 并将该视图的自定义类更改为 SVGKLayeredImageView (如果该类不可用并且您在此处看不到它,这意味着您没有导入与我相同版本的 SVGKit 或没有正确安装框架)

  3. 建立该视图的插座连接,然后你应该有

@IBOutlet 弱变量 svgImageView:SVGKLayeredImageView!

  1. 用法

      if let url = NSURL(string: "http://your-svg-file-url"){
            if url.pathExtension!.lowercaseString == "svg" {
    
                svgImageView.image = SVGKImage(contentsOfURL: url)
    
            }
        }
    
于 2016-01-30T03:35:16.823 回答