WKWebview加载本地HTML资源文件

前言:

iOS9.0之后苹果提供了一个加载本地HTML文件的方法,即

[webView loadFileURL:fileURL allowingReadAccessToURL:baseUrl]

但是我们现在开发一般需要适配到iOS8.0以上,所以我们也需要知道iOS9.0系统之前的加载方式。本文是把本地的HTML文件放在iOS的沙盒文件Document文件中,这个路径你可以自定义,只要能获取的到就好。

一、获取本地HTML的路径:

本地HTML的文件分布一般是这样的


file.png

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;
}

最后:

学习的同时也要多多总结,这是我的爬坑经验,希望对你有帮助,如有错误,多多指教😊。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,751评论 25 709
  • 从雨路走过 听到雨水穿过耳朵 没有花折的伞,轻雨打湿了疲倦 用宽容的方式爱着这条雨路 路上就会遇到幸福 如果你欣赏...
    戈菲阅读 258评论 0 3