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

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

概述Apple’s recommendation: In apps that run in iOS 8 and later, use the WKWebView class instead of using UIWebView. 因此,我已经用一个闪亮的新的WKWebView替换了我的旧的UIWebView.但是,我认为是一个简单的运动(简单地交换类和替换代理方法)就是一个真正的混乱. 问题 当我加载 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 URLvar 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()的工作项目

总结

以上是内存溢出为你收集整理的ios – WKWebView无法使用loadHTMLString(_,baseURL :)加载图像和CSS全部内容,希望文章能够帮你解决ios – WKWebView无法使用loadHTMLString(_,baseURL :)加载图像和CSS所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1110640.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存