iOS开发进阶

UIWebView 怎么优雅的加载图片

2017-10-16  本文已影响231人  人魔七七

先说运行场景

第一种情况比如我本地有一个HTML我需要加载,但是图片在工程里面。

第二种情况webView已经加载完成其实图片已经缓存到了本地,直接去沙盒读取缓存。

第三种情况如果有类似新闻类的详情页图片比较多,我想把缓存逻辑放到本地来处理。比如完全可以用SDWebImage缓存图片,还可以做图片点击放大等交互操作。

第一种关键代码:注意工程的图片资源在工程里面

<img src="11.0_network_ permissionsStatus_icon.png"/>

第二种关键代码:用到了一个第三方库从沙盒里面取图片RNCachingURLProtocol

NSString *fileName = [RNCachingURLProtocol cachePathForURLString:imageUrl];

RNCachedData *cache = [NSKeyedUnarchiver unarchiveObjectWithFile:fileName];

UIImage *image = [UIImage imageWithData:cache.data];

第三种关键代码:WebViewJavascriptBridge 用来H5和native交互的代码。JS把HTML所有图片url传过来缓存到本地,还可以做点击放大效果。

self.bridge = [WebViewJavascriptBridge bridgeForWebView:self.TXTWebView];

[self.bridge setWebViewDelegate:self];

[WebViewJavascriptBridge enableLogging];

//获取webView所有图片的src

[self.bridge callHandler:@"getImageUrlsArray" data:nil responseCallback:^(id responseData) {

[self downloadAllImagesInNative:responseData[@"data"]];

}];

//webView图片被点击事件响应

[self.bridge registerHandler:@"imageDidClicked" handler:^(id data, WVJBResponseCallback responseCallback) {

}];

上一篇下一篇

猜你喜欢

热点阅读