WKWebview加载本地HTML资源文件

作者: 索努木 | 来源:发表于2018-03-23 11:04 被阅读19次

    前言:

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

    最后:

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

    相关文章

      网友评论

        本文标题:WKWebview加载本地HTML资源文件

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