【问题标题】:iOS 13 Swift 5 wkwebview - display image from documents directory into wkwebview real deviceiOS 13 Swift 5 wkwebview - 将文档目录中的图像显示到 wkwebview 真实设备中
【发布时间】:2020-12-27 05:40:57
【问题描述】:

我有一个应用程序,其中包含要在 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 应运而生

可选的▿一些: 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/内容/

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

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

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

建议我尝试过

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

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

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

【问题讨论】:

标签: html xcode wkwebview ios13 swift5


【解决方案1】:

在 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 这里的解释几乎是完美的,我只是保存在文档目录中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多