美文网首页征服iOS傲视苍穹iOS《Objective-C》VIP专题IOS
UITableviewCell嵌套UIWebView自适应高度问

UITableviewCell嵌套UIWebView自适应高度问

作者: 夜冰雨 | 来源:发表于2017-08-04 09:45 被阅读131次

前言:今天有个需求,要在tableview中一个cell里嵌套了webView,想让Cell高度根据WebView高度进行自适应。

废话少说上代码:

在自定义Cell.m文件中

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

if (self)

{

self.webView = [[UIWebView alloc]init];

//创建URL

NSURL* url = [NSURL URLWithString:@"http://172.16.50.9:8080/yi-ad-h5/index.html"];

NSURLRequest* request = [NSURLRequest requestWithURL:url];

self.webView.opaque = NO;

self.webView.userInteractionEnabled = NO;

self.webView.scrollView.bounces = NO;

self.webView.delegate = self;

self.webView.paginationBreakingMode = UIWebPaginationBreakingModePage;

self.webView.scalesPageToFit = YES;

[_webView loadRequest:request];

[self.contentView addSubview:_webView];

[_webView mas_makeConstraints:^(MASConstraintMaker *make){

make.left.mas_equalTo(self.contentView.mas_left);

make.right.mas_equalTo(self.contentView.mas_right);

make.top.mas_equalTo(self.contentView.mas_top);

make.bottom.mas_equalTo(self.contentView.mas_bottom).offset(-15);

}];

}

return self;

}

#pragma mark - UIWebViewDelegate

- (void)webViewDidFinishLoad:(UIWebView *)webView

{

// 如果要获取web高度必须在网页加载完成之后获取

CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];

CGRect frame = webView.frame;

frame.size.height = height+50;

[webView setFrame:CGRectMake(10, 10, frame.size.width, frame.size.height)];

//    [self.bgView setFrame:CGRectMake(5, 5, 310,frame.size.height+10)];

[self addSubview:self.backgroundView];

//使用代理在ViewController中调用代理方法

if (self.delegate && [self.delegate respondsToSelector:@selector(setwebViewDidFinishLoad:)]) {

[self.delegate setwebViewDidFinishLoad:webView];

}

}

ViewController.m 文件

#pragma mark -- 获取cell的高度Delegate

- (void)setwebViewDidFinishLoad:(UIWebView *)web

{

cellRefreshCount++;

//防止一直刷新

if (cellRefreshCount == 1) {

//cell的高度为webView的高度

webHeight = web.frame.size.height;

//刷新section

NSIndexPath *path = [NSIndexPath indexPathForRow:0 inSection:1];

NSArray *paths = [NSArray arrayWithObjects:path,nil];

[self.tableView reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationNone];

}

else

{

return;

}

NSLog(@"cell的高度 === %ld",(long)newHeight);

}

如果有问题还请大家指出;

原文链接:http://www.xuebuyuan.com/2035051.html

相关文章

网友评论

    本文标题:UITableviewCell嵌套UIWebView自适应高度问

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