2017-09-25 57 views
0

Im試圖將svg圖像數據轉換爲UIImage實例使用SVGKit,但是當我試圖做到這一點時它會崩潰,並且錯誤信息就像下面,無法在Swift 4中使用`SVGKit`將'svg`數據轉換爲UIImage

終止應用程序由於未捕獲的異常「NSInternalInconsistencyException」,原因:「當被要求的百分比值轉換爲不同的類型(5)」

這裏是svgUIImage轉換的代碼。

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

其在使用AlamofireImage庫從服務器下載我的圖像數據Im此行

-> if let uiImageInstance = image.uiImage { 

越來越崩潰。我已經檢查過我的svg數據是否有迴應。

僅供參考:我的形象是化身字母和漸變背景的組合。見下圖以供參考。

enter image description here

我的SVG圖像樣本網址:Link

任何幫助嗎?

在此先感謝。

+0

這條線是錯誤的'如果讓的UIImage = {image.uiImage'確保一旦屬性名 –

+0

@Anbu。 Karthik我也嘗試過使用不同的屬性名稱。它沒有工作。 –

+0

爲什麼你使用兩個更安全的一個就足夠了這裏 –

回答

1

如果你是圖像使用漸變效果,那麼它不會在SVGKit工作。檢查您的圖像是否使用任何漸變效果。

蘋果的渲染不允許我們正確 呈現此圖像使用SVGKFastImageView,因爲蘋果的renderInContext方法 - 根據蘋果的文檔 - 忽略了蘋果自己的屏蔽層。直到 蘋果修復了這個bug,你應該使用SVGKLayeredImageView這個 特定SVG文件(或避免使用漸變)

+0

是的,我的圖像是字母和漸變的組合。 –

+0

我可以從服務中得到一個即時消息。所以我決定和png一起去,而不是svg。謝謝。 –

0

請執行下列操作:

  1. 首先,檢查response.data(?是不是正確的 格式你期待)
  2. 嘗試使用image.UIImage代替image.uiImage