ios – WKWebView无法使用loadHTMLString(_,baseURL :)加载图像和CSS

前端之家收集整理的这篇文章主要介绍了ios – WKWebView无法使用loadHTMLString(_,baseURL :)加载图像和CSS前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Apple’s recommendation

In apps that run in iOS 8 and later,use the WKWebView class instead of using UIWebView.

因此,我已经用一个闪亮的新的WKWebView替换了我的旧的UIWebView.但是,我认为是一个简单的运动(简单地交换类和替换代理方法)就是一个真正的混乱.

问题

当我加载一个HTML字符串

loadHTMLString(String,baseURL: URL?)

Web视图加载并呈现纯HTML,但它不加载htmlString中引用的任何图像或CSS文件.

这只发生在真实的设备上!
在Simultor中,所有引用的资源都正确加载.


我在我的视图控制器类中定义了一个简单的htmlString:

let imageName = "image.png"

let libraryURL: URL // The default Library URL

var htmlString: String {
    return "<html> ... <img src=\"\(imageName)\" /> ... </html>"
    // "..." represents more valid HTML code incl. header and body tags
}

图像存储在根库文件夹中,因此其URL为:

let imageURL = libraryURL.appendingPathComponent(imageName)

现在我将htmlString加载到Web视图中:

webView.loadHTMLString(htmlString,baseURL: libraryURL)

即使baseURL设置正确,也不会加载图像.

解决方案的想法

>也许WKWebView有解决相对路径的问题,所以我的第一个想法是使用HTML字符串内的绝对路径.
→❌不行.
> another SO post的两个答案建议使用
loadFileURL(URL,allowedReadAccessTo:URL)
而不是加载HTMLString(…)适用于iOS 9.
→✅工作.

但是,我无法使用解决方案2,因为我的HTML文件被加密,解密的文件不能存储在磁盘上.

有没有办法使用WKWebView加载本地资源,如图像和样式

loadHTMLString(String,baseURL: URL?)

功能?还是iOS 9中的bug?

(我只是不能相信Apple提供并建议使用无法从HTML字符串内部加载任何本地Web内容的网络视图?)

解决方法

那么你应该可以使用已经找到的功能使用WKWebViews的本地图像和CSS文件(和JavaScript文件).我的猜测是,你的baseURL变量是问题.

更新7.5.2017:

我已经完全更新了我的another SO answer中的代码,以前和我的答案有关.我有一个负载HTMLString()和.loadFileURL()的工作项目

原文链接:https://www.f2er.com/iOS/335962.html

猜你在找的iOS相关文章