UIWebView提供了三个方法来加载html资源
1. loadHTMLString:baseURL: 把html文件的内容以字符串的形式加载到webView里面,然后解析。编码为UTF8
<col>
1
2
3
<code>NSString</code> <code>*filePath = [[</code><code>NSBundle</code> <code>mainBundle] pathForResource:@</code><code>"index"</code> <code>ofType:@</code><code>"html"</code><code>];</code>
<code>NSURL</code> <code>*baseURL = [[</code><code>NSBundle</code> <code>mainBundle] bundleURL];</code>
<code>[</code><code>self</code><code>.webView loadHTMLString:[</code><code>NSString</code> <code>stringWithContentsOfFile:filePath encoding:</code><code>NSUTF8StringEncoding</code> <code>error:</code><code>nil</code><code>] baseURL:baseURL];</code>
2. loadData:MIMEType:textEncodingName:baseURL: 把html文件的内容以二进制的形式加载到webView里面,然后解析。MIMETYPE指定html文件的格式为"text/html",编码为UTF8
4
<code>NSData</code> <code>*data = [</code><code>NSData</code> <code>dataWithContentsOfFile:filePath];</code>
<code>[</code><code>self</code><code>.webView loadData:data MIMEType:@</code><code>"text/html"</code> <code>textEncodingName:@</code><code>"UTF-8"</code> <code>baseURL:baseURL];</code>
3. loadRequest:构造一个请求,webView以请求的形式加载本地html文件,然后解析。这种方式可以直接加载网络html
<code>NSURL</code> <code>*url = [</code><code>NSURL</code> <code>fileURLWithPath:filePath];</code>
<code>NSURLRequest</code> <code>*request = [</code><code>NSURLRequest</code> <code>requestWithURL:url];</code>
<code>[</code><code>self</code><code>.webView loadRequest:request];</code>
1. 上面加载html方式中的前两种都指定了一个baseURL,那么这个baseURL是干什么的?
iOS程序在运行的时候会把程序用到的资源文件copy到Bundle中,baseURL指定的目录就是Bundle的根目录
所以image,css,js资源,不管在项目里面放在哪个目录结构下,在HTML内引用的时候,都是直接根目录的
书写资源路径的时候,按照相对路径来理解,html和image,css,js可以看做是在同一个目录下
2. Xcode之前版本可能会把css,js文件当做编译资源而不是Bundle资源,这时可能会出现css,js没有效果
我们在Xcode中<code>Build Phases</code>下可以看到资源文件的存放位置,跟本次内容关联最大的有两项:<code>Compile Sources</code>和<code>Copy Bundle Resources</code>
查看确保资源位置放置正确即可修复这类问题