AAChartKit 9.0以下版本UI界面不显示问题

AAChartKit 9.0以下版本UI界面不显示问题

最近公司在用AAChartKit做图表,使用的时候发现在iOS9.0以下的版本界面不能显示,并报以下错误:
Could not create a sandbox extension for '/'

查询资料之后,发现原因是iOS 9.0以下版本, WKWebview不支持load项目根目录下的HTML源文件,需要将需要加载的HTML及其引用到的JavaScript文件copy到沙盒目录下,并加载沙盒目录下的文件。

其实AAChartKit作者在GitHub项目主页结尾处推荐大家引用网络上的JavaScript文件,因为JavaScript文件比较大。但是使用网络文件会有一定的网络延迟,所以还是希望作者能够完善一下,加油!
当然如果使用了网络文件就不需要修改getJavaScriptFileURLRequest方法了,所以使用网络文件的朋友请绕行!

我的做法是:修改AAChartView.m文件getJavaScriptFileURLRequest方法,增加iOS系统版本检测,iOS9.0以下版本copyHTML及JavaScript文件到沙盒目录

具体代码如下:

- (NSURLRequest *)getJavaScriptFileURLRequest {
    
    NSURL *webURL = [[NSBundle mainBundle] URLForResource:@"AAChartView" withExtension:@"html"];
    
    //将文件copy到tmp目录
    if ([[UIDevice currentDevice].systemVersion floatValue] < 9.0) {
        
        NSError *error = nil;
        NSFileManager *fileManager= [NSFileManager defaultManager];
        
        NSURL *temDirURL = [[NSURL fileURLWithPath:NSTemporaryDirectory()] URLByAppendingPathComponent:@"www"];
        [fileManager createDirectoryAtURL:temDirURL withIntermediateDirectories:YES attributes:nil error:&error];
        
        NSArray *array = @[webURL.path.lastPathComponent, @"AADrilldown.js", @"AAEasingMin.js", @"AAFunnel.js", @"AAHighcharts-3d.js", @"AAHighchartsLibrary.js", @"AAHighchartsMore.js", @"AAJQueryLibrary.js"];
        
        for (NSString *file in array) {
            
            NSString *extension = [file pathExtension];
            NSString *name = [file stringByDeletingPathExtension];
            
            NSURL *url = [[NSBundle mainBundle] URLForResource:name withExtension:extension];
            NSURL *newUrl = [temDirURL URLByAppendingPathComponent:file];
            
            if ([array indexOfObject:file] == 0) {
                webURL = newUrl;
            }
            
            if (![fileManager fileExistsAtPath:newUrl.path]) {
                [fileManager copyItemAtURL:url toURL:newUrl error:&error];
            }
            
        }
        
    }
    
    NSURLRequest *URLRequest = [[NSURLRequest alloc] initWithURL:webURL];
    return URLRequest;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,241评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,333评论 25 708
  • 最近陷入了一种囧境久久不能自拔,以至于很久没有提笔。于是借着下班的劲儿,随便写点儿。 一个多月以前某天公司召开会议...
    彭小派阅读 474评论 0 3
  • 夜的宁静和窗外滴答的雨声总是能让我胡思乱想,无以言语大学四年的时光有多匆匆,无以言语我还如此眷恋着校园生活。有很多...
    巫小伍儿阅读 584评论 3 3
  • 原文发布于犀牛故事,欢迎围观~ 【7·31更】中国人的酒席 大抵是几千年的小农经济,在若干年的传承里,当西方人郑重...
    逐溪阅读 396评论 0 0