为什么我不能在 Swift 4 中使用 `SVGKit` 将 `svg` 数据转换为 UIImage?

Why can't I convert the `svg` data to UIImage using `SVGKit` in Swift 4?

我正在尝试使用 SVGKit 将我的 svg 图像数据转换为 UIImage 实例,但是当我尝试这样做时它崩溃了,并且出现了错误消息如下所示:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Asked to convert a Percentage value to a different type (5)'

这里是 svgUIImage 转换的代码。

if let data = response.data {
    if let image = SVGKImage(data: data) {
       if let uiImageInstance = image.uiImage {
           self.userImageView.image = uiImageInstance
       }
    }
}

它在这一行崩溃了

->  if let uiImageInstance = image.uiImage {

我正在使用 AlamofireImage 库从服务器下载我的图像数据。

我已检查我的 svg 数据是否在响应中。

仅供参考: 我的图像是头像字母和渐变背景的组合。

参考下图。

我的 svg 图片样本 URL: Link

有什么帮助吗?

提前致谢。

请执行以下操作:

  1. 首先,检查response.data(是否正确 您期待的格式?)
  2. 尝试使用 image.UIImage 而不是 image.uiImage

如果您的图像正在使用渐变效果,那么它在 SVGKit 中将不起作用。检查你的图片是否使用了渐变效果。

Apple's rendering DOES NOT ALLOW US to render this image correctly using SVGKFastImageView, because Apple's renderInContext method - according to Apple's docs - ignores Apple's own masking layers. Until Apple fixes this bug, you should use SVGKLayeredImageView for this particular SVG file (or avoid using gradients)