UIWebView加载本地html页面(带图片文件夹)
1个回答
展开全部
最近做了一个项目,有个需求是加载本地html页面,后台给的资源包含了图片文件夹、js页面以及html页面。刚开始做的时候我觉得很简单,认为只要用UIWebView加载html字符串就可以了,结果试了很多种办法,图片就是一直显示不出来。查了很多资料,都是说图片的路径不对,然后按着度娘的方法去修改,结果还是一样。
在这里说明一下图片加载不出来的原因:因为我拿不到图片文件夹的绝对路径,只能拿到具体某张图片的相对路径(解释一下,在Xcode中,所有的资源文件夹都是虚拟的,只是相对于Xcode存在,但实际上是不存在的,所以在项目里是无法获取到某个文件夹的绝对路径的),但是在html页面里的图片路径写的是文件夹的绝对路径,所以当UIWebView加载html页面时,找不到html页面里所指的图片文件夹资源,故而图片显示不出来。
基于这个思路,我就想试着更改html页面的图片路径看看效果,结果试了很多种方法还是不行,最后都要放弃了。我知道是图片路径的问题导致图片不显示,但就是想不出办法去获取文件夹的绝对路径,我思考了一个星期都不得要领,最后问了一下同做该项目的安卓同事,终于完美的解决了这个让我头痛许久的问题。具体的解决思路是:将资源压缩添加到项目中,然后拷贝到沙盒目录里,项目启动后解压资源压缩包,并将存到沙盒目录的文件夹路径作为UIWebView的baseURL,这样图片的绝对路径就可以获取到了。
在这里解压资源包我用的是SSZipArchive这个三方库,解压只需要调用它的方法并设置代理即可,其他什么都不用做,非常简单方便。但是值得注意的是,我们解压成功之后,应该将沙盒里的资源包删除,否则每次运行项目都会解压一遍,容易造成内存的浪费,且效率不高。
在这里说明一下图片加载不出来的原因:因为我拿不到图片文件夹的绝对路径,只能拿到具体某张图片的相对路径(解释一下,在Xcode中,所有的资源文件夹都是虚拟的,只是相对于Xcode存在,但实际上是不存在的,所以在项目里是无法获取到某个文件夹的绝对路径的),但是在html页面里的图片路径写的是文件夹的绝对路径,所以当UIWebView加载html页面时,找不到html页面里所指的图片文件夹资源,故而图片显示不出来。
基于这个思路,我就想试着更改html页面的图片路径看看效果,结果试了很多种方法还是不行,最后都要放弃了。我知道是图片路径的问题导致图片不显示,但就是想不出办法去获取文件夹的绝对路径,我思考了一个星期都不得要领,最后问了一下同做该项目的安卓同事,终于完美的解决了这个让我头痛许久的问题。具体的解决思路是:将资源压缩添加到项目中,然后拷贝到沙盒目录里,项目启动后解压资源压缩包,并将存到沙盒目录的文件夹路径作为UIWebView的baseURL,这样图片的绝对路径就可以获取到了。
在这里解压资源包我用的是SSZipArchive这个三方库,解压只需要调用它的方法并设置代理即可,其他什么都不用做,非常简单方便。但是值得注意的是,我们解压成功之后,应该将沙盒里的资源包删除,否则每次运行项目都会解压一遍,容易造成内存的浪费,且效率不高。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询