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

时间:2017-09-25 13:08:50

标签: ios swift svg uiimage svgkit

我正在尝试使用svg将我的UIImage图像数据转换为SVGKit实例,但是当我尝试执行此操作时,它会崩溃,并且错误消息就像下面:

  

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'要求将百分比值转换为其他类型(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数据是否响应。

FYI:我的图片是头像字母和渐变背景的组合。

见下图供参考。

enter image description here

我的svg图片示例网址 Link

有任何帮助吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果你的图像是使用渐变效果,那么它将无法在SVGKit中使用。检查您的图像是否使用任何渐变效果。

  

Apple的渲染不允许我们正确渲染此图像   使用SVGKFastImageView,因为Apple的renderInContext方法 -   根据Apple的文档 - 忽略了Apple自己的屏蔽层。直到   Apple修复了这个bug,你应该使用SVGKLayeredImageView   特定的SVG文件(或避免使用渐变)

答案 1 :(得分:0)

请执行以下操作:

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