ios UIWebView 獲取高度
阿新 • • 發佈:2018-11-13
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的高度問題,第三個方法最佳