iOS_UITableViewCell上加载网页
2016-12-06 本文已影响269人
旅橙
- 本文实现的效果是在某个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页面.