iOS 13 Swift 5 wkwebview - 将文档目录中的图像显示到 wkwebview 真实设备中

iOS 13 Swift 5 wkwebview - display image from documents directory into wkwebview real device

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

上显示图像

html是

"\n

\n


\n"

与此 HTML 匹配,它将显示在 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 变为

Optional ▿ some : 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/Documents/content/

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

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

作为 ]2

建议我试过

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

但在真实设备上结果为空白

任何线索将不胜感激,提前致谢

在 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 这里的解释几乎是完美的,我只是保存在 swift.

的文档目录中