iOS TabeView 头视图和尾视图不滑动的实现

时间:2023-03-09 02:42:34
iOS TabeView 头视图和尾视图不滑动的实现

因项目有需求不能让section中的头尾视图滑动,顾根据网上的一些资料和自己整理的思路,已实现了不滑动效果,上代码,啥都说了,搞了2个小时都是泪。。。。

1.创建一个tableview

_mainTableView = [[UITableView alloc]initWithFrame:CGRectMake(, , kScreenWidth, kScreenHeight - ) style:UITableViewStylePlain];//带导航栏-64
_mainTableView.backgroundColor = [UIColor clearColor];
_mainTableView.dataSource = self;
_mainTableView.delegate = self;
_mainTableView.sectionHeaderHeight = ;//headView高
_mainTableView.sectionFooterHeight = ;//footerView高
_mainTableView.contentInset = UIEdgeInsetsMake(, , -, );//加载的时候需要底部视图

2. 实现scrollView代理协议

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
static CGFloat offsetCount = ;
CGFloat sectionHeaderHeight = ;//设置headView和footerView的最大值
CGFloat sectionFooterHeight = ;//设置headView和footerView的最大值
NSLog(@"%f",scrollView.contentOffset.y); if (scrollView.contentOffset.y<sectionHeaderHeight&&scrollView.contentOffset.y>=) {//headerView刚开始的滑动
if (offsetCount >= scrollView.contentOffset.y) {
[scrollView setContentOffset:CGPointMake(, ) animated:YES];
//scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, -sectionFooterHeight, 0);
}else{ scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, , -sectionFooterHeight, );
}
}
else if (scrollView.contentOffset.y>=sectionHeaderHeight && scrollView.contentOffset.y + sectionFooterHeight < scrollView.contentSize.height - scrollView.frame.size.height&&scrollView.contentOffset.y>=) {//中间的滑动
scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, , -sectionFooterHeight, ); }else if(scrollView.contentOffset.y + sectionFooterHeight >= scrollView.contentSize.height - scrollView.frame.size.height && scrollView.contentOffset.y < scrollView.contentSize.height - scrollView.frame.size.height&&scrollView.contentOffset.y>=){//footerView结束的时候的滑动
scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, ,-(scrollView.contentSize.height - scrollView.frame.size.height - scrollView.contentOffset.y) , );
}
offsetCount = scrollView.contentOffset.y;
}