AAChartKit 9.0以下版本UI界面不顯示問題
最近公司在用AAChartKit做圖表吐根,使用的時候發(fā)現(xiàn)在iOS9.0以下的版本界面不能顯示酥宴,并報以下錯誤:
Could not create a sandbox extension for '/'
查詢資料之后把介,發(fā)現(xiàn)原因是iOS 9.0以下版本践惑, WKWebview不支持load項目根目錄下的HTML源文件意狠,需要將需要加載的HTML及其引用到的JavaScript文件copy到沙盒目錄下,并加載沙盒目錄下的文件套菜。
其實AAChartKit作者在GitHub項目主頁結(jié)尾處推薦大家引用網(wǎng)絡(luò)上的JavaScript文件亲善,因為JavaScript文件比較大。但是使用網(wǎng)絡(luò)文件會有一定的網(wǎng)絡(luò)延遲逗柴,所以還是希望作者能夠完善一下蛹头,加油!
當(dāng)然如果使用了網(wǎng)絡(luò)文件就不需要修改getJavaScriptFileURLRequest方法了嚎于,所以使用網(wǎng)絡(luò)文件的朋友請繞行掘而!
我的做法是:修改AAChartView.m文件getJavaScriptFileURLRequest方法,增加iOS系統(tǒng)版本檢測于购,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;
}