tableView里面嵌套webView

    xiaoxiao2021-03-25  119

    注:原文来自http://www.jianshu.com/p/e199496a8b8a 转载请注明出处

    tableview中一个cell里嵌套了web view,想让web view根据内容自适应高度,cell根据webView自适应高度。

    对于这个需求,我们只要2步就可以完成。

    1.如何获取webview的高度

    webview的高度,我从http://stackoverflow.com/questions/7341767/ios-resize-uiwebview-to-fit-content http://www.xuebuyuan.com/2035051.html找到了答案。

    //获取到webview的高度 CGFloat height = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];

    2.获取到webview的高度,重新reloadTableview就可以

    - (void)viewDidLoad { [super viewDidLoad]; _webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 1)]; _webView.delegate = self; _webView.scrollView.scrollEnabled = NO; //预先加载url [self.webView loadRequest:[[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://www.baidu.com/"]]]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - TableViewDelegate & TableViewDatasource - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return 3; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == 1){ static NSString *identifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (!cell){ cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; [cell.contentView addSubview:_webView]; /* 忽略点击效果 */ [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; } return cell; }else{ static NSString *identifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (!cell){ cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; } cell.textLabel.text = [NSString stringWithFormat:@"index====%ld",(long)indexPath.row]; return cell; } } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; { if(indexPath.row == 1){ /* 通过webview代理获取到内容高度后,将内容高度设置为cell的高 */ return _webView.frame.size.height; }else{ return 100; } } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; } #pragma mark - UIWebView Delegate Methods -(void)webViewDidFinishLoad:(UIWebView *)webView { //获取到webview的高度 CGFloat height = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue]; self.webView.frame = CGRectMake(self.webView.frame.origin.x,self.webView.frame.origin.y, kScreenWidth, height); [self.tableView reloadData]; } - (void)webViewDidStartLoad:(UIWebView *)webView { NSLog(@"webViewDidStartLoad"); } - (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error { NSLog(@"didFailLoadWithError===%@", error); } 效果图
    转载请注明原文地址: https://ju.6miu.com/read-5431.html

    最新回复(0)