关于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=[[UIWebView alloc]initWithFrame:CGRectMake(10, 35, 320-32, 20)];

    [tempWebView loadHTMLString:model.borrowdetail baseURL:nil];

    tempWebView.delegate=self;

    tempWebView.backgroundColor = [UIColor clearColor];

    tempWebView.scalesPageToFit = NO//禁止用户缩放页面

    tempWebView.scrollView.pagingEnabled = NO;

    [self.view addSubview: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){

        [self creatTableView];

        [self creatTelephoneView];

    }else

    {

        [self.baseTableView reloadData];

    }

}

这里值得注意的问题是 必须将UIWebView   add到另一个view上UIWebview的代理方法才能返回高度  否则 UIWebView将计算不出来的高度


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值