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;代理
下面貼一段代碼吧視頻
- - (void)webViewDidFinishLoad:(UIWebView *)webView
- {
- CGFloat webViewHeight = 0.0f;
- if (webView.subviews.count > 0)
- {
- UIView *scrollerView = [webView.subviews objectAtIndex:0];//爲何要取第一個?
- if (scrollerView.subviews.count > 0)
- {
- UIView *webDocView = scrollerView.subviews.lastObject;
- if ([webDocView isKindOfClass:[NSClassFromString(@"UIWebDocumentView") class]])
- {
- webViewHeight = webDocView.frame.size.height;//獲取文檔的高度
- webView.frame= webDocView.frame; //更新UIWebView 的高度
- aScrollView.contentSize=CGSizeMake(485, 240+webViewHeight);//調整底層的contensize 的大小
- }
- }
- }
- }
記得在頭文件里加入 <UIWebViewDelegate>,在設置 webView.delegate =self;xml
去了解控件的組織架構,必要的時刻也是很又用的 。