2015-09-17 89 views
4

在我的應用程序中有一個UIWebView。其中加載的網頁有一些圖像,我想在其他地方使用這些圖像(例如,在UIImageView中顯示它們)從UIWebView獲取加載的圖像

那麼,是否可以直接從UIWebView獲取加載的圖像,而無需再次下載它們?我現在正在做的是從html文件獲取圖像的URL並下載它們,但這太費時了。

回答

0

我已經想通了:關鍵是從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:@","];