開發(fā)中,需要展示 HTML 類型的數(shù)據(jù),HTML 相應包含圖片或鏈接需要處理,多數(shù)選擇的 UIWebView 或 WKWebView(關(guān)于兩者的區(qū)別不明白,請自行百度),今天把一個三方類介紹給大家,那就是 IMYWebView,這個類兼容 WKWebView 和 UIWebView,實現(xiàn)了 UIWebView 到 WKWebView 的對接,即使你之前的項目是用的 UIWebView ,那也沒關(guān)系,只要將 UIWebView 換成 IMYWebView 就可以了。
HtmlWebView.gif
圖片或鏈接相應操作,具體詳情請查看 Demo
//添加圖片可點擊js
- (void)webViewDidFinishLoad:(UIWebView *)webView{
// //調(diào)整字號
// NSString *str = @"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '95%'";
// [webView stringByEvaluatingJavaScriptFromString:str];
//添加圖片可點擊js
static NSString * const jsGetImages =
@"function getImages(){\
var objs = document.getElementsByTagName(\"img\");\
for(var i=0;i<objs.length;i++){\
objs[i].onclick=function(){\
document.location=\"myweb:imageClick:\"+this.src;\
};\
};\
return objs.length;\
};";
[webView stringByEvaluatingJavaScriptFromString:jsGetImages];//注入js方法
//注入自定義的js方法后別忘了調(diào)用 否則不會生效(不調(diào)用也一樣生效了,,,不明白)
[webView stringByEvaluatingJavaScriptFromString:@"getImages()"];
/** 加載鏈接 圖片*/
[self getImageData];
}
/**
加載 webview 圖片
*/
- (void)getImageData{
//這里是js,主要目的實現(xiàn)對url的獲取
static NSString * const jsGetImages =
@"function getImages(){\
var objs = document.getElementsByTagName(\"img\");\
var imgScr = '';\
for(var i=0;i<objs.length;i++){\
imgScr = imgScr + objs[i].src + '+';\
};\
return imgScr;\
};";
[self.web stringByEvaluatingJavaScriptFromString:jsGetImages];//注入js方法
NSString *urlResurlt = [self.web stringByEvaluatingJavaScriptFromString:@"getImages()"];
mUrlArray = [NSMutableArray arrayWithArray:[urlResurlt componentsSeparatedByString:@"+"]];
[mUrlArray removeLastObject]; // 刪除最后一個 +
_assets = [NSMutableArray array];
for (NSString *url in mUrlArray) {
ZLPhotoPickerBrowserPhoto *photo = [[ZLPhotoPickerBrowserPhoto alloc] init];
photo.photoURL = [NSURL URLWithString:url];
[_assets addObject:photo];
}
}
/**
圖片瀏覽
@param aStr <#aStr description#>
*/
- (void)tapBrowser:(NSString *)aStr{
[self.assets enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
ZLPhotoPickerBrowserPhoto *photo = obj;
if([photo.photoURL.absoluteString isEqual:aStr]){
index = idx;
}
}];
// 圖片游覽器
ZLPhotoPickerBrowserViewController *pickerBrowser = [[ZLPhotoPickerBrowserViewController alloc] init];
pickerBrowser.status = UIViewAnimationAnimationStatusZoom;
pickerBrowser.photos = self.assets;
// 當前選中的值
pickerBrowser.currentIndex = index;
// 展示控制器
[pickerBrowser showPickerVc:self];
}