UIWebView加载本地html页面(带图片文件夹)

UIWebView加载本地html页面(带图片文件夹),第1张

        最近做了一个项目,有个需求是加载本地html页面,后台给的资源包含了图片文件夹、js页面以及html页面。刚开始做的时候我觉得很简单,认为只要用UIWebView加载html字符串就可以了,结果试了很多种办法,图片就是一直显示不出来。查了很多资料,都是说图片的路径不对,然后按着度娘的方法去修改,结果还是一样。

        在这里说明一下图片加载不出来的原因:因为我拿不到图片文件夹的绝对路径,只能拿到具体某张图片的相对路径(解释一下,在Xcode中,所有的资源文件夹都是虚拟的,只是相对于Xcode存在,但实际上是不存在的,所以在项目里是无法获取到某个文件夹的绝对路径的),但是在html页面里的图片路径写的是文件夹的绝对路径,所以当UIWebView加载html页面时,找不到html页面里所指的图片文件夹资源,故而图片显示不出来。

        基于这个思路,我就想试着更改html页面的图片路径看看效果,结果试了很多种方法还是不行,最后都要放弃了。我知道是图片路径的问题导致图片不显示,但就是想不出办法去获取文件夹的绝对路径,我思考了一个星期都不得要领,最后问了一下同做该项目的安卓同事,终于完美的解决了这个让我头痛许久的问题。具体的解决思路是:将资源压缩添加到项目中,然后拷贝到沙盒目录里,项目启动后解压资源压缩包,并将存到沙盒目录的文件夹路径作为UIWebView的baseURL,这样图片的绝对路径就可以获取到了。

        在这里解压资源包我用的是SSZipArchive这个三方库,解压只需要调用它的方法并设置代理即可,其他什么都不用做,非常简单方便。但是值得注意的是,我们解压成功之后,应该将沙盒里的资源包删除,否则每次运行项目都会解压一遍,容易造成内存的浪费,且效率不高。

第一次写帖子,希望能帮助到大家,最近在项目中使用h5和iOS UIWebView交互时遇到一些问题,跟大家分享一下,写的不对的地方,求大佬们指点

iOS 使用UIWebView加载h5页面,h5页面有一个input标签如:<input id="fileId" type="file" accept="image/png,image/jpeg" multiple>用于上传文件,点击会调用iOS的相册或相机、浏览等,如图1,简单说一下multiple属性限制单选和多重选择

input标签中无论怎么写multiple属性,UIWebView加载的文件上传都是多重选择。经发现UIWebView会自动为HTML <input type="file">标签添加多个属性。这种行为与iOS版本不同,差不多算是UIWebView的bug.

解决就非常简单了,使用WKWebView替换UIWebView,WKWebView优于UIWebView,正确处理<input type="file">。


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

原文地址: https://outofmemory.cn/zaji/6135958.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存