最近在寫郵件的內(nèi)嵌的圖片顯示. 對于郵件來說內(nèi)嵌圖片是一種特殊的附件. 所以需要把郵件 HTML 中對應(yīng)的 img 的 src 換成相應(yīng)的地址.
但是因?yàn)槲覀兊母郊潜4嬖?Documents 中, 而 WKWebView 卻不能顯示 Documents 中的圖片. 估計是因?yàn)橐粋€已知的bug. 在進(jìn)行搜索后, 大概有以下三個解決方案;
- 采用新的API, 在 iOS 9 之后出了一個新的 API :
從第二個參數(shù)來看是可以解決這個問題的. 如果把要顯示的 HTML 存儲在 Documents 中, 并通過第二個參數(shù)允許訪問 Documents 應(yīng)該是可以解決問題. 不過因?yàn)檫€要支持 iOS 9 以下的系統(tǒng). 我并沒有嘗試這個方案.
- 搭建一個簡單的服務(wù)器.
這個方法太過復(fù)雜, 不到迫不得已不會采用. 但是一定是有效的.
- 將圖片轉(zhuǎn)換為 Base64.
HTML 是支持直接將 img 標(biāo)簽的 src 的值直接放一個 Base64 的編碼.
比如:
<img src="data:img/png;base64, ADDDFEIONVJDSLGKJSLF ..">
利用這個特性就能繞開這個限制. 實(shí)現(xiàn)在 WKWebView 中顯示圖片. 實(shí)現(xiàn)也很簡單. 只有兩行:
let imageData = NSData(contentsOfURL: imageURL)
// 默認(rèn)的選項正好符合要求.
let encodedString = imageData.base64EncodedStringWithOptions([])