前言:
iOS9.0之后苹果提供了一个加载本地HTML文件的方法,即
[webView loadFileURL:fileURL allowingReadAccessToURL:baseUrl]
但是我们现在开发一般需要适配到iOS8.0以上,所以我们也需要知道iOS9.0系统之前的加载方式。本文是把本地的HTML文件放在iOS的沙盒文件Document文件中,这个路径你可以自定义,只要能获取的到就好。
一、获取本地HTML的路径:
本地HTML的文件分布一般是这样的
1.获取到本地HTML文件的入口,一般是 index.html
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0] stringByAppendingPathComponent:@"html"] stringByAppendingPathComponent:@"index.html"];
2.获取到入口文件的上一级目录
NSString *baseFilePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0] stringByAppendingPathComponent:@"html"];
3.再把本地路径转化为URL格式,供加载HTML使用
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
NSURL *baseUrl = [NSURL fileURLWithPath:baseFilePath];
二、iOS9.0和以上系统使用的加载方式
[webView loadFileURL:fileURL allowingReadAccessToURL:baseUrl];
三、通用的加载方式(即iOS9.0以上和以前都适用)
NSURL *fileUrl = [self fileURLForBuggyWKWebView8WithFileURL:baseUrl];
[webView loadRequest:[NSURLRequest requestWithURL:fileUrl]];
- (NSURL *)fileURLForBuggyWKWebView8WithFileURL: (NSURL *)fileURL {
NSError *error = nil;
if (!fileURL.fileURL || ![fileURL checkResourceIsReachableAndReturnError:&error]) {
return nil;
}
NSFileManager *fileManager= [NSFileManager defaultManager];
NSURL *temDirURL = [[NSURL fileURLWithPath:NSTemporaryDirectory()] URLByAppendingPathComponent:@"www"];
[fileManager createDirectoryAtURL:temDirURL withIntermediateDirectories:YES attributes:nil error:&error];
NSURL *htmlDestURL = [temDirURL URLByAppendingPathComponent:fileURL.lastPathComponent];
[fileManager removeItemAtURL:htmlDestURL error:&error];
[fileManager copyItemAtURL:fileURL toURL:htmlDestURL error:&error];
NSURL *finalHtmlDestUrl = [htmlDestURL URLByAppendingPathComponent:@"index.html"];
return finalHtmlDestUrl;
}
最后:
学习的同时也要多多总结,这是我的爬坑经验,希望对你有帮助,如有错误,多多指教😊。