UITableview 的footerview、headerview悬浮处理

阅读 57

2021-09-29

代码如下:
#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;
  }
  }
}

精彩评论(0)

0 0 举报