1. 程式人生 > >ios UIWebView 獲取高度

ios UIWebView 獲取高度

WebView內容高度的問題,相信很多人都遇到過,無法獲取到準確高度,導致頁面佈局出現差錯,下面一起學習下 獲取高度的幾種方法
1 、我們通過獲取 webView的ScrollvIew的內容的高度來獲取webView的高度

  CGFloat webViewHeight = [self.webView.scrollView contentSize].height;
  //獲取網頁現有的frame
  CGRect webViewRect = webView.frame;
  //修改webView的高度
  webViewRect.size.height = webViewHeight;
  webView.frame = webViewRect;

2、使用js 來獲取網頁的高度

NSString * jsString = @"document.body.offsetHeight";
CGFloat webViewHeight = [[webView stringByEvaluatingJavaScriptFromString:jsString] floatValue];
// 獲取網頁的frame
CGRect webViewRect = webView.frame;
//修改webView的高度
webViewRect.size.height = webViewHeight;
webView.frame = webViewRect;

3、通過監聽實現

//監聽webview
[self.webView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];

//監聽觸發

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

{
    if ([keyPath isEqualToString:@"contentSize"]) {
        //通過webview的contentSize獲取內容高度
        self.webViewHeight = [self.webView.scrollView contentSize].height;
        CGRect newFrame = self.webView.frame;
        newFrame.size.height = self.webViewHeight;
        NSLog(@"-webViewHeight-----%f",self.webViewHeight);
    }
}

//移除觀察者

-(void)dealloc
{
    [self.webView.scrollView removeObserver:self forKeyPath:@"contentSize" context:nil];
}

以上三個方法可以實現webView的高度問題,第三個方法最佳

demo 下載