SVGKit iOS图像加载

SVGKit iOS图像加载,ios,svgkit,Ios,Svgkit,我已经将SVGKit lib导入到我的项目中,我想加载存储在NSString中的svg图像,如下所示: <svg xmlns="http://www.w3.org/2000/svg" .... </svg> 我犯了错误,因为url为零,这很明显,因为它不是url,但库中有什么方法可以使用吗 您需要从URL的字符串表示形式创建NSURL对象,因此: NSString *strURL = "http://......"; NSURL *imageURL = [[NSURL al

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

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

我犯了错误,因为url为零,这很明显,因为它不是url,但库中有什么方法可以使用吗

您需要从URL的字符串表示形式创建NSURL对象,因此:

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

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

SVGKImage *svgImage = [SVGKImage imageWithContentsOfURL:imageURL];
这有帮助吗?

您可以这样做:

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

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

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

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

  • 将该视图的插座连接起来,这样您就应该

  • @IBOutlet弱var svgImageView:SVGKLayeredImageView

  • 用法

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

  • 这里没有足够的信息。为什么url为零?问题不是url为零,而是如何通过SVGKit库方法加载存储在NSString中的svg图像。。。我有一个想法,将NSString转换为NSInputString,并使用init SVGSource。这可能会起作用…要加载的文件在哪里?它是本地的还是远程的?它从web加载并存储在NSString中因此
    NSString
    包含SVG源代码?我想使用这种方法,但由于未捕获的异常“NSInternalInconsistencyException”,我会终止应用程序,原因是:“方法不受支持/尚未由SVGKit实现”,所以这是死胡同:(我知道这种方法,但我只有SVG本身的字符串表示,而没有url…:(哦,对了,所以你有一个SVG作为XML需要解析?我发现了这个:它有点像它。)。
      if let url = NSURL(string: "http://your-svg-file-url"){
            if url.pathExtension!.lowercaseString == "svg" {
    
                svgImageView.image = SVGKImage(contentsOfURL: url)
    
            }
        }