iOS_UITableViewCell上加载网页

  • 本文实现的效果是在某个TableViewCell上加载UIWebView,加载完成后高度正常显示.
1.属性
  @property (nonatomic, strong) UIWebView *webView;
  if (!_webView) {
  //[DMDevceManager screenWidth]是屏幕宽度,100是先预留出加载动画的高度
    _webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, [DMDevceManager screenWidth], 100)];
    _webView.delegate = self;
    _webView.scrollView.scrollEnabled = NO;   
   }
  //加载方法,预先加载url
    [self.webView loadRequest:[[NSURLRequest alloc] initWithURL:[NSURL URLWithString:_model.b_url]]];
2.TableView代理方法中的处理
  - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  {
  ...
    return _webView.frame.size.height;
  ...
  }
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
  ...
   if(indexPath.section == 3)
  {
    static NSString *identifier = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (!cell){
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
        [cell.contentView addSubview:_webView];
   
        if (!indicator) {//此处添加加载动画的处理
         ...
            [cell.contentView addSubview:indicator];
         ...
        } 
        /* 忽略点击效果 */
        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    }
    return cell;
  }
  ...
  }
#####3.WebView代理方法中的处理--主要用于获取高度
  #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, [DMDevceManager screenWidth], height);
  //    [SVProgressHUD showSuccessWithStatus:@"图文详情加载成功"];

  ...//此处移除或者暂停加载动画
  _isLoadOver = YES;//该布尔用于启用加载动画.当为NO时在上面可以开始动画
  [_tableView reloadData];
  }
  • 以上就可以动态的将web的高度给cell,在cell上正常显示web页面.

你可能感兴趣的:(iOS_UITableViewCell上加载网页)