我正在尝试让WKWebView在 WKWebView
中显示本地下载的图像 . webview通常显示HTML,可以远程检索 . HTML的内容有时可能包含指向图像的远程链接 . 我的应用程序解析HTML并查找这些HTML标记,下载它引用的文件,然后用本地文件替换远程链接 .
通常来说,这不是很困难但是图像没有被显示,可能是由于webview的图像和本地HTML文件位于两个单独的目录(文档目录和app bundle目录中) . 我见过有人建议将图像的下载目的地移动到与HTML文件相同的目录,但这对我来说不是一个选项,因为我不想开始将用户下载的文件与本地资产混合在一起 .
什么是我最好的行动方案?
2 回答
好吧,我找到了一个解决方法 . 我现在不是在本地存储图像并在HTML文件中引用它们,而是将图像转换为Base64,然后将它们添加到HTML中 . 这不是理想的,但它完成了工作 . 如果有人设法找到实际的解决方案,我将打开这个问题 .
要在
WKWebView
中显示缓存的HTML引用缓存资源:NSTemporaryDirectory()
提供的目录中 . 所以像这样的图像标签:...<img src='https://www.myimage.com/example_image.png'/>...
应缓存并替换为以下内容:
...<img src='/private/var/mobile/Containers/Data/Application/527CF4FC-9319-4DFF-AB55-9E276890F5DC/tmp/example_image.png'/>...
NSTemporaryDirectory()
提供的目录中 . 这里的一个区别是它必须使用file://
协议缓存(以后引用)作为使用NSData
缓存字符串的限制(参见示例代码) .例如
file:///private/var/mobile/Containers/Data/Application/527CF4FC-9319-4DFF-AB55-9E276890F5DC/tmp/my_html_content_string.html
有几点需要指出:
您无法将HTML作为原始字符串加载(
loadHTMLString:baseURL:
) .您无法使用
file://
协议引用HTML字符串中的缓存资源 . 这可能适用于UIWebView
,但不适用于WKWebView
.Objective-C的
迅速