美文网首页ios 程序猿Family
TableView上的HeaderView放WebView

TableView上的HeaderView放WebView

作者: 忆白i | 来源:发表于2016-07-25 09:15 被阅读903次

###滑动起来没有一丝卡顿现象亲测

```

{

UIView*view;

UIImageView*image;

CGFloatwebViewHeight;

}

- (void)viewDidLoad {

[superviewDidLoad];

self.table=[[UITableViewalloc]initWithFrame:CGRectMake(0,CGRectGetMaxY(self.webView.frame),kScreenWidth,kScreenHeight-self.tabBarController.tabBar.frame.size.height)];

self.table.delegate=self;

self.table.dataSource=self;

self.table.separatorStyle=UITableViewCellSelectionStyleNone;

[self.viewaddSubview:self.table];

view= [[UIViewalloc]initWithFrame:CGRectMake(0,0,kScreenWidth,kScreenHeight)];

self.table.tableHeaderView=view;

_webView= [[UIWebViewalloc]initWithFrame:CGRectMake(0,0,kScreenWidth,kScreenHeight)];

[_webViewsetScalesPageToFit:YES];//大小自适应

_webView.scrollView.scrollEnabled=NO;

[self.webViewloadRequest:[[NSURLRequestalloc]initWithURL:[NSURLURLWithString:@"你的URL"]]];

[viewaddSubview:_webView];

_webView.delegate=self;

_webView.scrollView.delegate=self;

[_webView.scrollViewaddObserver:selfforKeyPath:@"contentSize"options:NSKeyValueObservingOptionNewcontext:nil];

}

- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context

{

if([keyPathisEqualToString:@"contentSize"]) {

webViewHeight= [[_webViewstringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"]floatValue];

CGRectnewFrame=_webView.frame;

newFrame.size.height=webViewHeight;

_webView.frame= newFrame;

[_webViewsizeToFit];

CGRectFrame =view.frame;

Frame.size.height= Frame.size.height+_webView.frame.size.height;

view.frame= newFrame;

[self.table setTableHeaderView:view];//这句话才是重点

}

}

- (void)webViewDidFinishLoad:(UIWebView*)webView

{

CGFloatsizeHeight = [[webViewstringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"]floatValue];

self.webView.frame=CGRectMake(0,0,kScreenWidth, sizeHeight);

stro.contentSize=CGSizeMake(kScreenWidth, sizeHeight+1);

}

- (void)didReceiveMemoryWarning {

[superdidReceiveMemoryWarning];

}

#pragma mark返回每组行数

-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section{

return5;

}

#pragma mark返回每行的单元格

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{

staticNSString*CellIdentifier =@"Cell";

UITableViewCell*cell = [UITableViewCell dequeueReusableCellWithIdentifier:CellIdentifier];

if(!cell) {

cell = [[commentsTableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellIdentifierIndexPa:indexPath];

}

returncell;

}

#pragma mark返回每行高度

- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath

{

return150;

}

```

相关文章

网友评论

  • maybenai:大兄弟,你确定这个能行?为什么我headerView变成webView了只能往下滑但是不能往下滑?
  • 白牛桑:你好,我的web是支持双指放大滑动的,像这种怎么解决tableview和web的滑动冲突啊
  • jacky_ma:你这样做,webview的缓存机制就相当于废掉了,简单网页还好,如果页面内存在大量图片等占资源的内容,绝对会卡爆了
  • hauibojek:不用markdown 这排版看的真是难受
  • 咖啡bu加糖:我的tableView不显示cel内容啊,demo能发我一份么1042657187@qq.com
  • 18489bbafee5:楼主,我用你这个方法增加了一个上拉加载的功能,但执行reloaddata的时候tableviewcell就是空白了 你能帮我看一下什么原因吗? 感谢大神
    gongbj:@strugglingLD 您好,请问在使用的时候stro.contentSize=CGSizeMake(kScreenWidth, sizeHeight+1);这个stro指的是什么吗?
    18489bbafee5:@iOS我称王 解决了 刷新的同事要设置一下headerview的高度。
    忆白i:才看到
    问题解决了么 ?
  • 可惜你不是我的双子座:stro.contentSize=CGSizeMake(kScreenWidth, sizeHeight+1);
    这句什么意思呀?
    gongbj:@一个安静的时候 我也刚用作者的代码,也发现这个问题.
    可惜你不是我的双子座:@iOS我称王 stro 是什么?
    忆白i:contentSize 这个属性设置什么值 不会不知道吧
  • d413c7eaa7d8:之前是在webview加载完毕的时候重新计算高度,模拟器上可以但是在真机上重新计算高度后cell总是没办法和headView很好的连接,用了你的方法解决了,非常感谢!
  • 哇咔咔123:牛逼的行,大神:first_quarter_moon:

本文标题:TableView上的HeaderView放WebView

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