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.
的文档目录中
我有一个应用程序,其中下载的图像要在 WKWEBVIEW 的本地 html 中显示。一切正常,但未在 iPhone 设备
上显示图像html是
"\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.
的文档目录中