转自:http://blog.sina.com.cn/s/blog_a5243c7f0102vry2.html
有的时候会碰见类似的苦逼需求, webview自适应实际内容高度 下面有四种方法供使用
方法1:获取webview中scrovllview的contentsize进行设置
| -(void)webViewDidFinishLoad:(UIWebView*)webView{ CGFloatwebViewHeight=[webView.scrollViewcontentSize].height; CGRectnewFrame = webView.frame; newFrame.size.height= webViewHeight; webView.frame= newFrame; } |
方法2:执行js语句 直接获取html文档的dom高度
|
-(void)webViewDidFinishLoad:(UIWebView*)webView{
CGFloatwebViewHeight=[[webViewstringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"]floatValue];
// CGFloat webViewHeight= [[webViewstringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"]floatValue];
CGRectnewFrame
=
webView.frame;
newFrame.size.height=
webViewHeight;
webView.frame=
newFrame;
}
|
方法3.先将UIWebView的高度设为最小,然后再使用sizeThatFits就会返回刚好合适的大小
| -(void)webViewDidFinishLoad:(UIWebView*)webView{ CGSizeactualSize = [webViewsizeThatFits:CGSizeZero]; CGRectnewFrame = webView.frame; newFrame.size.height= actualSize.height; webView.frame= newFrame; } |
方法4.遍历webview子视图 获取UIWebDocumentView高度即实际高度
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
-(void)webViewDidFinishLoad:(UIWebView*)webView{
CGFloat
webViewHeight
=
0.0f;
if
([webView.subviewscount]>
0)
{
UIView
*scrollerView
=
webView.subviews[0];
if
([scrollerView.subviewscount]>
0)
{
UIView
*webDocView
=
scrollerView.subviews.lastObject;
if
([webDocViewisKindOfClass:[NSClassFromString(@"UIWebDocumentView")class]])
{
webViewHeight
=
webDocView.frame.size.height;//获取文档的高度
webView.frame=webDocView.frame;//更新UIWebView
的高度
}
}
}
}
|