搜集了网上各大博客以及技术论坛,能够获取UIWebView的内容高度有以下两个方法,相关代码如下:
方法一:
方法二:
然而,笔者在使用以上两种方法的时候,都出现了第一次使用UIWebView的时候,高度算得不准的情况(基本上都是少一点),使得出现UIWebView中的文字被截断的情况。原因是:<code>viewDidFinishLoad</code>方法只是在内存中加载完了html代码,然而并没有渲染到UIWebView上面去,所以重新渲染后的真实高度和<code>viewDidFinishLoad</code>所获取的高度有一定的偏差,所以我们应该在UIWebView渲染完后,再获取高度,这时候才是最精确的。
其中JavaScript中有一个方法,可以在UIWebView渲染完毕html后执行,相关代码如下:
<code>window.onload</code>方法会在UIWebView渲染之后调用,所以我们可以在这个里面写一个url请求,把高度带过去,然后在UIWebView的代理方法<code>webView:shouldStartLoadWithRequest:navigationType:</code>中拦截这个请求,获取高度,这时候获取的高度就是准确的了,JavaScript代码如下:
代理方法代码如下:
PS:你可以把JavaScript代码放在你的html代码的前面或者后面
相关参考