最近忙着个项目,要在UItableViewCell 中加上一个webView 并且webView 需要全部展开显示,在网上也找了不少的解决方案 比如这个简友的方案 :
1. //www.greatytc.com/p/e199496a8b8a 。
2.还有类似的在 UItableViewCell 中加载webView 然后 在UIwebView的代理方法中
- (void)webViewDidFinishLoad:(UIWebView*)webView
//通过获取到webview的高度
CGFloatheight = [[self.myWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"]floatValue];
然后发送通知 刷新tableview,但是这里需要注意:避免出现 循环调用
3. 我的最终实现方案,
直接在 包含 UItabelview 的UIviewController 中 添加一个 (不做显示的 )UIWebView 然后在通过这个UIwebView 加载网页(注意:这个webView 是不显示的)此时 通过代理方法:
- (void)webViewDidFinishLoad:(UIWebView*)webView
//通过获取到webview的高度
CGFloatheight = [[self.myWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"]floatValue];
3.1 由于 这边提供的 Html5 界面未做图片适配 这里加了适配的javaScript 语句
NSString*js =@"function imgAutoFit() { \
var imgs = document.getElementsByTagName('img'); \
for (var i = 0; i < imgs.length; ++i) {\
var img = imgs[i];\
img.style.maxWidth = %f;\
} \
}";
js = [NSStringstringWithFormat:js, [UIScreenmainScreen].bounds.size.width-20];
[self.myWebViewstringByEvaluatingJavaScriptFromString:js];
[self.myWebViewstringByEvaluatingJavaScriptFromString:@"imgAutoFit()"];
3.2 这里需要注意下 必须等待当前 VC 中的WebView 加载完毕 然后 再在UItableviewCell 中加载 URL 否则 会报 code -999 的错误(原因是 webView 在进行加载时,当前界面没有加载完毕,然后就又请求下一个URL 导致当前正在加载的 URL 被 cancel 掉产生的)
L