一般情况下,tableview中的section是会默认随着tableview的滚动而滚动的,而是会等到属于这个section的cell滑完过后,然后往上顶(不知道大家能不能听懂=_=!)

有些时候这样显得不是很美观,而且有些项目是需要主要针对section而不是row 进行操作,所以这个时候控制section不悬停就显得很重要

这里有两种方法,直接贴代码吧

  • 第一种:
 #pragma -mark 控制section不悬停

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView

 {

     NSLog(@"%f",scrollView.contentOffset.y);

     CGFloat sectionHeaderHeight = ;

     if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=) {

         scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, , , );

     }

     else if (scrollView.contentOffset.y>=sectionHeaderHeight) {

         scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, , , );

     }

 }
  • 第二种:
 //- (void)setFrame:(CGRect)frame{

 //    CGRect sectionRect = [self.tableView rectForSection:self.section];

 //    CGRect newFrame = CGRectMake(CGRectGetMinX(frame), CGRectGetMinY(sectionRect), CGRectGetWidth(frame), CGRectGetHeight(frame)); [super setFrame:newFrame];

 //}

希望能帮助到大家!

在项目中我使用的是第一种方法

05-11 15:57