怎樣獲取UIWebView 的文字的高度

1最近自己給記搞了個新問題,一段文字是富文本,有很多的複雜的格式,大寫,換行,加粗等等,所以必須用uiwenbview 上來加載html 文件來是這樣的功能,但是效果要做的又要像用textview 的一樣,即感覺是放在一個textview 上的,但是還有圖片和視頻,而且這個視頻必須在必要的時候可以關掉,這樣就想出了一個用uiwebview +uibutton +uiscrollview 來實現這樣的功能。

2 問題是uiscrollview  是可以滾動的,uiwebview  也是要滾動的,當uiwebView 在uiscrollview 上面的時候 時不好滾動的,當不能完全顯示自己的文字的時候交互特別的不好,所以要一下計算出uiwebview 的實際大小,然後設置其正確 的frame,在然後動態的改變uiscrollview 的contentsize  實現類似textview效果

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

- (void)webViewDidFinishLoad:(UIWebView *)webView

可以在加載成功數據之後在裏面判斷html  的高度和寬度,然後調整uiwebview 的大小

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

4uiwebView 的佈局結構

它的上面會放一個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;

 

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

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章