4
在我的應用程序中有一個UIWebView
。其中加載的網頁有一些圖像,我想在其他地方使用這些圖像(例如,在UIImageView
中顯示它們)從UIWebView獲取加載的圖像
那麼,是否可以直接從UIWebView
獲取加載的圖像,而無需再次下載它們?我現在正在做的是從html文件獲取圖像的URL並下載它們,但這太費時了。
在我的應用程序中有一個UIWebView
。其中加載的網頁有一些圖像,我想在其他地方使用這些圖像(例如,在UIImageView
中顯示它們)從UIWebView獲取加載的圖像
那麼,是否可以直接從UIWebView
獲取加載的圖像,而無需再次下載它們?我現在正在做的是從html文件獲取圖像的URL並下載它們,但這太費時了。
我已經想通了:關鍵是從NSURLCache
中提取圖像。但是,從iOS 8開始,似乎您需要將默認緩存設置爲application:didFinishLaunchingWithOptions:
中的第一項,才能使其工作。例如:
在application:didFinishLaunchingWithOptions:
[NSURLCache setSharedURLCache:[[NSURLCache alloc]
initWithMemoryCapacity:32*1024*1024 diskCapacity:64*1024*1024 diskPath:...]
那麼你UIWebView
加載完成後:
NSCachedURLResponse * response = [[NSURLCache sharedURLCache]
cachedResponseForRequest:[NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://.../image.png"]]];
if (response.data)
{
UIImage * nativeImage = [UIImage imageWithData:response.data];
....
}
如果你不已經擁有了它,你可以從UIWebView
獲取圖像陣列與
NSArray * images = [[webView stringByEvaluatingJavaScriptFromString:
@"var imgs = []; for (var i = 0; i < document.images.length; i++) "
"imgs.push(document.images[i].src); imgs.toString();"]
componentsSeparatedByString:@","];