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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)