代码如下:
#UITableViewStyleGrouped 会有悬浮
UITableView * mainTableView = [[UITableView alloc] initWithFrame:CGRectMake(0,0,self.frame.size.width, self.frame.size.height) style:UITableViewStyleGrouped];
#style:UITableViewStylePlain 不会有悬浮
UITableView * mainTableView = [[UITableView alloc] initWithFrame:CGRectMake(0,0,self.frame.size.width, self.frame.size.height) style:UITableViewStylePlain];
针对“UITableViewStylePlain”类型的UITableView悬浮的解决方法:在如下的UIScrollView代理方法中进行如下处理
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
if(scrollView == self.mainTableview) {
//去掉UItableview的section的headerview悬浮
CGFloat sectionHeaderH = 10;(这里的值根据自己实际情况去设置,设置好之后注意在不同类型的机型上都要测试一下)
if (scrollView.contentOffset.y<=sectionHeaderH && scrollView.contentOffset.y>=0) {
scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
} else if (scrollView.contentOffset.y>=sectionHeaderH) {
scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderH, 0, 0, 0);
}else{
scrollView.contentInset = UIEdgeInsetsZero;
}
//去掉UItableview的section的footerview悬浮
CGFloat sectionFooterH = 10;(这里的值根据自己实际情况去设置,设置好之后注意在不同类型的机型上都要测试一下)
if (scrollView.contentOffset.y<=sectionFooterH && scrollView.contentOffset.y>=0) {
scrollView.contentInset = UIEdgeInsetsMake(0, 0, -sectionFooterH, 0);
} else if (scrollView.contentOffset.y>= sectionFooterH) {
scrollView.contentInset = UIEdgeInsetsMake(0, 0, -sectionFooterH, 0);
}else{
scrollView.contentInset = UIEdgeInsetsZero;
}
}
}