亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS中精確計算WebView高度的方法示例

2019-10-21 18:41:09
字體:
來源:轉載
供稿:網友

前言

在開發app的過程中難免會遇到將webView加載到tableView的cell上的需求,一般遇到這種問題,通常想到的思路就是在webView的回調方法webViewDidFinishLoad中獲取到webView的高度,刷新tableView,將高度賦值給tableView的回調方法heightForRow。看似沒有任何問題,但是在實際操作的時候卻發現得到的高度并不是webView的實際高度,顯然這種方法是行不通的。其實并不是方法不行,而是webViewDidFinishLoad代理方法被調用時,頁面并不一定完全展現完成,可能有圖片還未加載出來,導致此時獲取的高度是并不是最終高度,過會兒圖片加載出來后,瀏覽器會重新排版,而我們在這之前給了一個錯誤高度,導致顯示異常。既然這種方法行不通,那么到底如何才能準確計算webView的高度呢?

答案是監聽,具體的實現過程如下:

給webView的scrollView的contentSize屬性添加監聽,每當內容發生變化,contentSize一定會跟著變,捕獲這個變動,在監聽方法中實現webViewDidFinishLoad中的代碼,也就是獲取最新的內容高度賦給webView:

//添加監聽[_WebView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:@"WejinWuLiuViewController"];
//監聽回調- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{  if ([keyPath isEqualToString:@"contentSize"]) {  _webViewHeight = [_WebView.scrollView contentSize].height; CGRect newFrame = _WebView.frame; newFrame.size.height = _webViewHeight; _WebView.frame = newFrame; }}

iOS開發之解決WebView自適應內容高度

首先如果直接進行內容展示,或者進行sizeToFit的操作,那么可能會造成圖片超過屏幕大小,字體變得很小的結果,所以這里用到了UIWebView的delegate方法和添加了html的標簽語言,使用了javascript操作方法。具體可以研究代碼,如下:

//web -(UIWebView *)detailWebView { if (_detailWebView == nil) { _detailWebView = [UIWebView new]; _detailWebView.delegate = self; _detailWebView.scrollView.bounces = NO; _detailWebView.scrollView.showsHorizontalScrollIndicator = NO; _detailWebView.scrollView.scrollEnabled = NO; _detailWebView.dataDetectorTypes = UIDataDetectorTypeAll; [_detailWebView sizeToFit]; } return _detailWebView; } 
NSString *htmlcontent = [NSString stringWithFormat:@"<head><style>img{max-width:%fpx !important;}</style></head><div id=/"webview_content_wrapper/">%@</div>",f_Device_w-30,detailDic[@"content"]]; [_detailWebView loadHTMLString:htmlcontent baseURL:nil]; 
#pragma mark ----- webView 的 delegate - (void)webViewDidFinishLoad:(UIWebView *)webView { //獲取頁面高度(像素) NSString * clientheight_str = [webView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"]; float clientheight = [clientheight_str floatValue]; //設置到WebView上 webView.frame = CGRectMake(15, _whereNewsLabel.bottom+10, f_Device_w-30, clientheight); //下面這樣寫就是獲取到比較準確的內容高度,不需要再進行其他計算了 //獲取內容實際高度(像素) NSString * height_str= [webView stringByEvaluatingJavaScriptFromString: @"document.getElementById('webview_content_wrapper').offsetHeight + parseInt(window.getComputedStyle(document.getElementsByTagName('body')[0]).getPropertyValue('margin-top')) + parseInt(window.getComputedStyle(document.getElementsByTagName('body')[0]).getPropertyValue('margin-bottom'))"]; float height = [height_str floatValue]; //再次設置WebView高度(點) webView.frame = CGRectMake(15, _whereNewsLabel.bottom+10, f_Device_w-30, height); if ([self.delegate respondsToSelector:@selector(backWebViewWithHeight:)]) { [self.delegate backWebViewWithHeight:webView.bottom+5]; } } 

有寫代碼是我項目中使用的,沒有必要用,大家可以根據自己的需要修改,必要的代碼上面都有

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产综合久久香蕉| 丝袜亚洲欧美日韩综合| 日韩美女视频在线观看| 成人在线精品视频| 久久精品2019中文字幕| 中文字幕亚洲色图| 91香蕉嫩草影院入口| 性亚洲最疯狂xxxx高清| 亚洲色图13p| 国产国语videosex另类| 亚洲美女在线观看| 91高清视频免费观看| 亚洲国产精品va在看黑人| 2019中文字幕在线免费观看| 九九综合九九综合| 美女精品视频一区| 色婷婷**av毛片一区| 欧美日韩午夜剧场| 欧美成人免费网| 黑人巨大精品欧美一区二区| 国产在线拍偷自揄拍精品| 久久久久久亚洲精品| 国产91色在线播放| 中文字幕欧美日韩va免费视频| 国产日韩在线播放| 午夜精品久久久久久久99黑人| 色与欲影视天天看综合网| 精品久久久久久久久久久| 色综合色综合久久综合频道88| 久久免费视频网站| 久久99久久亚洲国产| 少妇高潮久久久久久潘金莲| 国产成人精品免高潮在线观看| 国产成人精品一区二区| 国产精品日韩欧美| 亚洲色图在线观看| 中文字幕免费精品一区| 亚洲精品免费一区二区三区| 久久精品成人动漫| 国产欧美日韩丝袜精品一区| 欧美日本高清一区| 久热99视频在线观看| 久久91精品国产91久久久| 在线a欧美视频| 亚洲无av在线中文字幕| 在线观看欧美视频| 精品久久久久久中文字幕大豆网| 疯狂做受xxxx欧美肥白少妇| 92裸体在线视频网站| 欧美成人黄色小视频| 日韩欧美在线观看视频| 亚洲电影免费观看高清完整版在线| 欧美另类在线播放| 午夜欧美大片免费观看| 中文字幕久久精品| 亚洲第一免费网站| 亚洲精品久久7777777| 日本国产一区二区三区| 欧美视频在线观看 亚洲欧| 成人免费看片视频| 欧美午夜xxx| 午夜精品久久久久久久99热| 久久久久久噜噜噜久久久精品| 欧美大片免费看| 伊人精品在线观看| 清纯唯美亚洲综合| 黑人欧美xxxx| 国产精品欧美日韩| 韩国一区二区电影| 欧美日韩国产黄| 日韩欧美999| 亚洲国产精品久久91精品| 亚洲片在线观看| 国产综合久久久久| 日韩欧美国产视频| 久久久久久久久久国产| 日日噜噜噜夜夜爽亚洲精品| 韩国一区二区电影| 亚洲视频在线观看网站| 97人洗澡人人免费公开视频碰碰碰| 久久精品国产91精品亚洲| 国语自产精品视频在线看| 国产丝袜视频一区| 懂色aⅴ精品一区二区三区蜜月| 国产一区二区动漫| 97精品国产97久久久久久春色| 亚洲成人av中文字幕| 欧美性猛交xxxx偷拍洗澡| 欧美在线日韩在线| 55夜色66夜色国产精品视频| 国产精品高潮视频| 久久久久久久久91| 亚洲性猛交xxxxwww| 国产精品99导航| 国产精品白嫩美女在线观看| 国产福利成人在线| 亚洲黄页网在线观看| 亚洲jizzjizz日本少妇| 成人免费网视频| 欧美成人黑人xx视频免费观看| 日韩欧美中文第一页| 51精品在线观看| 精品偷拍各种wc美女嘘嘘| 亚洲天堂av在线免费观看| 国产精品三级美女白浆呻吟| 国产精品免费小视频| 亚洲人永久免费| 成人黄色中文字幕| 91av在线视频观看| 国产日韩欧美在线播放| 国产亚洲精品va在线观看| 97国产suv精品一区二区62| 欧美午夜丰满在线18影院| 国产欧美日韩免费看aⅴ视频| 亚洲成人精品av| 亚洲国产成人精品一区二区| 91在线色戒在线| 国内偷自视频区视频综合| 青青草国产精品一区二区| 国产精品久久久久久久久久99| 欧美日韩国产成人高清视频| 精品夜色国产国偷在线| 欧美电影免费观看高清| 国产亚洲视频在线观看| 九九久久精品一区| 亚洲男人天天操| 亚洲aa在线观看| 中文字幕一区日韩电影| 国产精品久久久999| 91免费精品视频| 国产精品私拍pans大尺度在线| 久久久久久国产三级电影| 中文字幕欧美视频在线| 欧美国产视频一区二区| 欧美专区中文字幕| 精品国产一区二区三区在线观看| 国内精品模特av私拍在线观看| 国产精品免费一区豆花| 久久香蕉国产线看观看网| 国产成人一区二区在线| 亚洲成人黄色在线| 亚洲男人的天堂在线| 亚洲裸体xxxx| 国产一区二区三区在线看| 亚洲人av在线影院| 欧美视频中文在线看| 国产精品福利在线观看网址| 91av在线视频观看| 91精品国产高清久久久久久久久| 国产欧美精品日韩精品| 欧美成人午夜免费视在线看片| 91中文字幕在线观看| 日韩av在线最新| 2019中文字幕在线观看| 久久五月天色综合| 亚洲精品国产美女| 亚洲色图欧美制服丝袜另类第一页| 国产成人97精品免费看片| 欧美电影电视剧在线观看| 欧美午夜视频在线观看| 亚洲第一福利在线观看| 一区二区三区无码高清视频| 伊人久久综合97精品| 精品露脸国产偷人在视频|