您的当前位置:首页iOS 11 UITableView加载时乱跳问题

iOS 11 UITableView加载时乱跳问题

2024-12-10 来源:哗拓教育
正常reload-1.gif
异常reload-1.gif
正常reload-2.gif
异常reload-2.gif

异常:

异常原因:

执行 reload操作时 会导致contentsize的重新计算

异常解析:

在 Self-Sizing 开启的状态下,cell的行高是通过estimateRowHeight来计算的,contentsize也是不定的(只有cell显示完的时候,contentsize才最终确定下来)
当此时执行 reloadData操作时,会调用 heightForRow 进行布局,这就造成了contentSize的变化, 也就是tableview显示区域的变化,进而出现了乱跳的现象

解决方案:

关闭估算行高

tableView.estimatedRowHeight = 0;

当使用到SectionHeader或者SectionFooter的时候

tableView.estimatedSectionHeaderHeight = 0;
tableView.estimatedSectionFooterHeight = 0;
显示全文