美文网首页iOS机智小工具
UIWebView加载本地html文件,资源路径问题

UIWebView加载本地html文件,资源路径问题

作者: calmakon | 来源:发表于2015-12-21 15:40 被阅读7637次

今天项目用到加载本地html文件的需求,使用webView加载完成,但是图片和页面布局都无法正常显示。于是各种查资料,最终解决,记录下以便以后翻阅。

根据添加本地文件的方式不同,整理如下:

1.拖动文件到 Xcode,提示两个选择,create groups 和 create folder references,默认情况下为第一种,即所有加入到项目的文件都会在 mainBundle 根路径下,即不管加入项目的文件的目录结构如何,在 APP 中都可以通过 mainBundlePath/filename 来访问到;如果采用第二种方式,则就会保留相对路径,需要通过 mainBundlePath/path/filename 来访问。通过这两种方式到项目的文件夹显示具有不同的颜色。 选择 create groups ,文件夹颜色为黄色。

html里有一个路径的问题(  link href= ""),在Xcode中, Xcode不能找到像url("../images/photo.png")这种路径,所以应该在Xcode中调整下html文件访问本页面图片和css样式文件的路径。

示例代码:

NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];

NSString *htmlString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

NSString *basePath = [[NSBundle mainBundle] bundlePath];

NSURL *baseURL = [NSURL fileURLWithPath:basePath];

[self.webView loadHTMLString:htmlString baseURL:baseURL];

要注意的就是,因为baseURL的:baseURL 操作已经把项目根目录统一在项目下,加载 index.html 中的 image , css 的话,就不再需要路径了(直接填写图片名,   css 文件名),这样 html 文件就可以正常显示 html 的完整内容了。

Xcode 找到对应的 html 文件,找到(  link href= ""),将类似 ../images/photo.png 的路径改为 photo.png ,去掉前面的文件夹路径,直接使用资源文件名

2.选择 create folder references ,添加到工程里是蓝色的文件夹。这里我使用的文件夹名字为 urlName ,里面包含一个名为 index 的 html 文件。

代码如下:

NSURL * url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"urlName"]];

NSURLRequest * request = [NSURLRequest requestWithURL:url];

[self.webView loadRequest:request];

相关文章

网友评论

  • a8d7e091a88e:请教大神,我按照您的写法,图片还是加载不出来啊,是需要到html文件里改link href 这个路径吗
    小东门儿:按照第一种办法做 把你涉及到的所有文件路径前缀都去掉 只保留资源名称就行了
  • 14aa9fe20aef:请教大神一下,如果我的本地html文件和资源是通过网络下载到本地的做法和上面你说的做法一样吗?
    14aa9fe20aef:@A_kon 嗯,好的,我试试,感谢
    calmakon:@mikuyu 你可以试下,应该是第一种方式,主要是资源路径问题,调整下就好了
  • CrystalZhu:图片显示出来了,厉害!!!
    calmakon:@730f4d9dc036 那就好
  • Timefiles:大神 我按照你第二种方式试了下,还是不行,图片显示不出来,能帮我看看嘛 扣扣727963470

本文标题:UIWebView加载本地html文件,资源路径问题

本文链接:https://www.haomeiwen.com/subject/qxpphttx.html