iOS-TableView设置setContentOffset无法回到顶部

前言

一个页面使用TableView展示,有筛选按钮,当滑动tableview到底部,点击筛选按钮后tableview在模拟器上恢复到了初始位置,但测试在使用过程中发现筛选后偏移位置出错。

如图


2.jpg

上图红色位置是tableview,顶部蓝色区域是3个筛选按钮,当点击某一个筛选按钮滑动后,再点击另一个筛选按钮,此时tableview偏移出现问题,我们很快想到在筛选按钮点击的时候重置tableview的偏移量,快速写下如下代码

// 顶部点击
-(void)headerFilterDidClick{
// 重置偏移量
  [tableview setContentOffset:CGPointZero animated:NO];
}

运行后发现并没有解决实际的偏移问题,此时满脑子黑人问号???

问题解决

在tableview初始化时重置estimatedRowHeight、estimatedSectionHeaderHeight、estimatedSectionFooterHeight

    tableview.estimatedRowHeight = 0;
    tableview.estimatedSectionHeaderHeight = 0;
    tableview.estimatedSectionFooterHeight = 0;

如图


3.jpg

原因

tableview的contentOffset的计算是预估的值并非准确的值,设置了偏移量为0,默认还是会去添加上预估值计算所需的偏移,在初始化时我们需要重置为0

你可能感兴趣的:(iOS-TableView设置setContentOffset无法回到顶部)