WKWebView 显示 Documents 的文件夹中的图片.

最近在写邮件的内嵌的图片显示. 对于邮件来说内嵌图片是一种特殊的附件. 所以需要把邮件 HTML 中对应的 img 的 src 换成相应的地址.

但是因为我们的附件是保存在 Documents 中, 而 WKWebView 却不能显示 Documents 中的图片. 估计是因为一个已知的bug. 在进行搜索后, 大概有以下三个解决方案;

  • 采用新的API, 在 iOS 9 之后出了一个新的 API :

loadFileURL(_:allowingReadAccessTo:)

从第二个参数来看是可以解决这个问题的. 如果把要显示的 HTML 存储在 Documents 中, 并通过第二个参数允许访问 Documents 应该是可以解决问题. 不过因为还要支持 iOS 9 以下的系统. 我并没有尝试这个方案.

  • 搭建一个简单的服务器.

这个方法太过复杂, 不到迫不得已不会采用. 但是一定是有效的.

  • 将图片转换为 Base64.

HTML 是支持直接将 img 标签的 src 的值直接放一个 Base64 的编码.
比如:

利用这个特性就能绕开这个限制. 实现在 WKWebView 中显示图片. 实现也很简单. 只有两行:

let imageData = NSData(contentsOfURL: imageURL)
// 默认的选项正好符合要求.
let encodedString = imageData.base64EncodedStringWithOptions([])

你可能感兴趣的:(WKWebView 显示 Documents 的文件夹中的图片.)