Я пытаюсь предварительно загрузить теги изображений из строки html, чтобы загрузить их, когда устройство находится в автономном режиме. В принципе, я удаляю исходный url из всех тегов <img>
, очищаю URL, чтобы иметь чистое имя файла, а затем загружайте изображение.Сохранение изображений в Main Bundle, а затем загрузка их в HTML работает на Simulator, но не на реальном устройстве?
__block NSString *imageName = [[NSString alloc]init];
//Get the string after HTTP://
NSArray *nohttp = [actualUrl componentsSeparatedByString:@"//"];
imageName = [nohttp objectAtIndex:1];
//Clean any /.:
imageName = [imageName stringByReplacingOccurrencesOfString:@"/" withString:@""];
imageName = [imageName stringByReplacingOccurrencesOfString:@"." withString:@""];
imageName = [imageName stringByReplacingOccurrencesOfString:@":" withString:@""];
//Add .png at the end as we will be saving it as a PNG
imageName = [NSString stringWithFormat:@"%@.png", imageName];
//change the source url to the new filename of the image so the WebView will load it from the main bundle
html = [html stringByReplacingOccurrencesOfString:actualUrl withString:imageName];
//save the image to the main bundle
NSString *pathString = [NSString stringWithFormat:@"%@/%@",[[NSBundle mainBundle]bundlePath], imageName];
//this just checks if the image already exists
BOOL test = [[NSFileManager defaultManager] fileExistsAtPath:pathString];
if (!test){
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); dispatch_async(queue, ^(void) {
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:actualUrl]];
UIImage* image = [[UIImage alloc] initWithData:imageData];
NSData *imageData2 = UIImagePNGRepresentation(image);
[imageData2 writeToFile:pathString atomically:YES];
});
}
Тогда после того, как я загрузить HTML строку в UIWebView, она прекрасно работает на тренажере, но на устройстве изображения просто не загружаются. Зачем?
NSURL *baseUrl = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@",[[NSBundle mainBundle]bundlePath]]];
[self.webView loadHTMLString:self.htmlPage baseURL:baseUrl];
Любые предложения, мысли? Изображения загружаются на устройстве iOS или имитаторе, но не загружаются в WebView реального устройства. Он отлично работает для симулятора.
Основной комплект не может быть записан на устройствах iOS. Попробуйте сохранить их в каталоге документов – Vig
Спасибо, что и было. –
Я всегда буду следить за тем, чтобы файл был сохранен, NSError * error = nil; , если { NSLog (@ "WriteToFile не удалось:% @", ошибка) ([imageData2 WriteToFile: @ "Foo" атомарно: НЕТ кодирования:: NSASCIIStringEncoding ошибки и ошибки]!); } – Vig