1. 程式人生 > >關於UItableViewCell上載入UIWebView自適應高度問題

關於UItableViewCell上載入UIWebView自適應高度問題

我們知道所有的關於UI的載入都是在主執行緒中完成的,而在UITableView中cell的自適應高度經常用的方案是在cell height代理方法中呼叫cellforRowAtIndexPath代理方法 返回高度的  如果在cell上再載入UIWebView的時候  UiWebView的自適應高度也是在UIWebView的代理方法中完成的。這樣的話在cellForrow代理方法中載入UIWebview的時候就會出現一個死迴圈  在IOS7.0以前 可以再Webview的代理方法中用tableview的reloadData方法  重新整理  但是IOS8.0就不行了。 

這裡我的方法是寫個方法直接算出UiWebview的高度以後再載入UItableView

-(void)creatWebViewForEvaluateHeight

{

UIWebView *  tempWebView=[[UIWebViewalloc]initWithFrame:CGRectMake(10, 35, 320-32, 20)];

    [tempWebView loadHTMLString:model.borrowdetailbaseURL:nil];

    tempWebView.delegate=self;

    tempWebView.backgroundColor = [UIColorclearColor];

    tempWebView.scalesPageToFit

= NO//禁止使用者縮放頁面

    tempWebView.scrollView.pagingEnabled = NO;

    [self.viewaddSubview:tempWebView];

    tempWebView.alpha=1.0f;

}

- (void)webViewDidFinishLoad:(UIWebView *)webView

{

//字型大小

    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '100%'"

];

//字型顏色

    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextFillColor= 'black'"];

//頁面背景色

    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.background='#fafafa'"];

CGRect frame = webView.frame;

CGSize fittingSize = [webView sizeThatFits:CGSizeZero];

    frame.size = fittingSize;

    webView.frame = frame;

webViewFrame=frame;

    [webView removeFromSuperview];

if (self.baseTableView==nil){

        [selfcreatTableView];

        [selfcreatTelephoneView];

    }else

    {

        [self.baseTableViewreloadData];

    }

}

這裡值得注意的問題是 必須將UIWebView   add到另一個view上UIWebview的代理方法才能返回高度  否則 UIWebView將計算不出來的高度