SVGKit iOS加载图片

时间:2014-06-10 08:09:56

标签: ios svgkit

我已将SVGKit lib导入到我的项目中,我想加载我存储在NSString中的svg图像:

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

当我尝试通过

加载它时
SVGKImage* newImage = [SVGKImage imageWithContentsOfURL:svgUrl];

我得到错误,因为网址为零,这很明显,因为它不是URL,但是我可以使用库中的任何方法吗?

3 个答案:

答案 0 :(得分:0)

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

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

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

SVGKImage *svgImage = [SVGKImage imageWithContentsOfURL:imageURL];

这有帮助吗?

答案 1 :(得分:0)

你可以这样做:

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

然而,我怀疑你应该做的是张建议的。在任何情况下,您都应确保在下载数据时从主线程中执行此操作。

答案 2 :(得分:0)

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

  1. 在Interface Builder中,拖动&#34;查看&#34;进入你的场景。
  2. 转到Identity Inspector并更改该视图的自定义类 SVGKLayeredImageView (如果该类不可用且您在此处未看到它,则表示您不会导入SVGKit与我拥有的版本相同或不正确install框架

  3. 建立该视图的出口连接,然后你应该

  4.   

    @IBOutlet weak var svgImageView:SVGKLayeredImageView!

    1. 用法

        if let url = NSURL(string: "http://your-svg-file-url"){
              if url.pathExtension!.lowercaseString == "svg" {
      
                  svgImageView.image = SVGKImage(contentsOfURL: url)
      
              }
          }