美文网首页iOS_不断学习
tableviewCell中嵌套webView高度问题

tableviewCell中嵌套webView高度问题

作者: iOS_Gato_老猫 | 来源:发表于2016-12-20 10:08 被阅读84次

    在viewController.h中定义两个属性:

    @interface ViewController : UIViewController
    @property (nonatomic, strong) UITableView *tableView;
    @property (nonatomic, assign) CGFloat cellHeight;
    @end
    

    在viewController.m中的实现:

    #pragma mark tableView delegate
    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 10;
    }
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    if (indexPath.row == 9) {
    WebCell *cell = [tableView dequeueReusableCellWithIdentifier:@"WebCell"];
    cell.vc = self;
    cell.indexPath = indexPath;
    [cell setValueWithUrl:@"http://www.baidu.com"];
    return cell;
    }
    static NSString *cell_iden = @"UITableViewCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cell_iden];
    if (!cell) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cell_iden];
    }
    return cell;
    }
    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    if (indexPath.row == 9) {
    return _cellHeight;
    }else{
    return 44;
    }
    }
    

    关键来了,
    在cell中首先你要把webView的上下左右约束全设置成0;
    在cell.h中:

    #import@class ViewController;
    @interface WebCell : UITableViewCell
    @property (nonatomic, strong) ViewController *vc;
    @property (nonatomic, strong) NSIndexPath *indexPath;
    -(void)setValueWithUrl:(NSString *)url;
    @end
    

    定于这两个属性主要是刷新tableview用。
    在cell.m中的实现:

    -(void)setValueWithUrl:(NSString *)url{
    if (!url || [url isEqualToString:_url]) {//防止死循环
    return;
    }
    _url = url;
    NSURL *URL = [NSURL URLWithString:url];
    [_webView loadRequest:[NSURLRequest requestWithURL:URL]];
    }
    
    -(void)webViewDidFinishLoad:(UIWebView *)webView{
    CGSize size = [webView sizeThatFits:CGSizeZero];
    CGFloat height = size.height;
    _vc.cellHeight = height;
    [_vc.tableView reloadRowsAtIndexPaths:@[_indexPath] withRowAnimation:UITableViewRowAnimationNone];
    _webView.scrollView.scrollEnabled = NO;//如果需要webview本身的滚动可以不设置成NO
    }
    

    相关文章

      网友评论

        本文标题:tableviewCell中嵌套webView高度问题

        本文链接:https://www.haomeiwen.com/subject/fpuxvttx.html