怎樣獲取UIWebView 的文字的高度

1最近本身給記搞了個新問題,一段文字是富文本,有不少的複雜的格式,大寫,換行,加粗等等,因此必須用uiwenbview 上來加載html 文件來是這樣的功能,可是效果要作的又要像用textview 的同樣,即感受是放在一個textview 上的,可是還有圖片和視頻,並且這個視頻必須在必要的時候能夠關掉,這樣就想出了一個用uiwebview +uibutton +uiscrollview 來實現這樣的功能。html

2 問題是uiscrollview  是能夠滾動的,uiwebview  也是要滾動的,當uiwebView 在uiscrollview 上面的時候 時很差滾動的,當不能徹底顯示本身的文字的時候交互特別的很差,因此要一下計算出uiwebview 的實際大小,而後設置其正確 的frame,在而後動態的改變uiscrollview 的contentsize  實現相似textview效果web

3 難點是怎樣計算要加載的html 文件的大小,研究會發現uiwebview 是有個代理的架構

- (void)webViewDidFinishLoad:(UIWebView *)webViewide

能夠在加載成功數據以後在裏面判斷html  的高度和寬度,而後調整uiwebview 的大小佈局

那麼怎樣得到這個大小呢,改變大小的時機找到了,最關鍵的問題又回來了。ui

4uiwebView 的佈局結構spa

它的上面會放一個UIWebDocumentView 咱們能夠得到這個的大小,而後將它傳回,在設置uiwebView 的大小 frame;代理

下面貼一段代碼吧視頻

  
  
  
  
  1. - (void)webViewDidFinishLoad:(UIWebView *)webView 
  2.         CGFloat webViewHeight = 0.0f; 
  3.         if (webView.subviews.count > 0)  
  4.         { 
  5.             UIView *scrollerView = [webView.subviews objectAtIndex:0];//爲何要取第一個? 
  6.             if (scrollerView.subviews.count > 0)  
  7.             { 
  8.                 UIView *webDocView = scrollerView.subviews.lastObject; 
  9.                 if ([webDocView isKindOfClass:[NSClassFromString(@"UIWebDocumentView") class]]) 
  10.                 { 
  11.                     webViewHeight = webDocView.frame.size.height;//獲取文檔的高度 
  12.                     webView.framewebDocView.frame; //更新UIWebView 的高度 
  13.                     aScrollView.contentSize=CGSizeMake(485, 240+webViewHeight);//調整底層的contensize 的大小 
  14.                 } 
  15.             } 
  16.         } 

記得在頭文件里加入 <UIWebViewDelegate>,在設置  webView.delegate =self;xml

 

去了解控件的組織架構,必要的時刻也是很又用的 。

相關文章
相關標籤/搜索