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

你可能感兴趣的:(AAChartKit 9.0以下版本UI界面不显示问题)