首页 > 解决方案 > iOS 13 Swift 5 wkwebview - 将文档目录中的图像显示到 wkwebview 真实设备中

问题描述

我有一个应用程序,其中下载的图像要在 WKWEBVIEW 中以本地 html 显示。一切正常,但它没有在 iPhone 设备上显示图像

html是

"\n

<img src="images/d35fb6a3-8a21-4196-9616-ad2c6db60669/fd21b894-38c0-42c5-aa69-a938abe40e4b2467857252325869136.png">

\n

<img src="images/d35fb6a3-8a21-4196-9616-ad2c6db60669/c927a2a6-4ef0-481d-b27d-525cec7ed3814195490571216387044.png">

\n"

与此 HTML 匹配,它将显示在 wkwebview 中,该 wkwebview 使用以下代码在模拟器上完美显示

let baseURL = Functions.FileIO.contentFolderURL()
static func contentFolderURL() -> URL? {
            guard let folderURL = DataManager.shared.applicationDocumentsURL?.appendingPathComponent("content") else {
                return nil
            }
            
            do {
                let properties = try (folderURL as NSURL).resourceValues(forKeys: [URLResourceKey.isDirectoryKey])
                if let isDirectory = properties[URLResourceKey.isDirectoryKey] as? Bool , isDirectory == false {
                    return nil
                }
            } catch let error as NSError where error.code != NSFileReadNoSuchFileError {
                return nil
            } catch {
                // No folder, so we create it.
                do {
                    try FileManager.default.createDirectory(atPath: folderURL.path, withIntermediateDirectories: true, attributes: nil)
                } catch {
                    return nil
                }
            }
            
            return folderURL
        }

然后最后显示

baseURL 应运而生

可选▿一些:file:///Users/paza/Library/Developer/CoreSimulator/Devices/D2204E03-8A8F-4EF4-8924-683CF519DD19/data/Containers/Data/Application/E4ED56CF-B247-4471-9F9B-23384FD6D6B3/Documents /content/ - _url:file:///Users/paza/Library/Developer/CoreSimulator/Devices/D2204E03-8A8F-4EF4-8924-683CF519DD19/data/Containers/Data/Application/E4ED56CF-B247-4471-9F9B-23384FD6D6B3 /文件/内容/

self.webView?.loadHTMLString(HTML, baseURL: baseURL)

在下面的模拟器中工作在设备中不起作用

https://stackoverflow.com/a/52838445/3455426[]2 _ _

建议我尝试

self.webView?.loadFileURL(baseURL, allowingReadAccessTo: baseURL)

但结果这在真实设备上是空白的

任何线索将不胜感激,在此先感谢

标签: htmlxcodewkwebviewios13swift5

解决方案


在 WKWebview 中,如果我们必须显示带有缓存资源的 HTML,首先我们必须将 HTML 字符串保存在文档目录中的 HTML 文件中。

确保您的缓存资源路径和 HTML 文件的路径也相同,缓存资源仅由 lastPathComponent 标识。

所以错误是应该是的HTML

let HTML = "<html><body>\n<p><img src=\"fd21b894-38c0-42c5-aa69-a938abe40e4b2467857252325869136.png\"></p>\n<p><img src=\"c927a2a6-4ef0-481d-b27d-525cec7ed3814195490571216387044.png\"><br></p>\n</body></html>"

具体来说,最后一个路径组件应该在那里。

我也跟着 https://en.it1352.com/article/9f185d4d185243cc92128148443ca660.html 这里的解释几乎完美,我只是保存在文档目录中以便快速。


推荐阅读