美文网首页
10(四)UITableView的cell高度缓存

10(四)UITableView的cell高度缓存

作者: rebeccaBull | 来源:发表于2017-03-20 22:35 被阅读0次

    1为什么

    因为当tableView滚动时会不停的回调- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;这个代理方法,当cell的高度需自适应内容时,就意味着每次回调这个方法时都要计算高度,而计算是要花时间了,在用户体验上的体现就是卡顿。为了避免重复且无意义的计算cell高度,缓存高度就显得尤为重要了。

    2怎么

    缓存高度需要一个可变数组,每当回调- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;这个方法时,我们先去这个数组里去取,如果有,就直接拿出来,如果没有,就计算高度,并且放进数组。

    刷新tableView时记得清空高度缓存数组

    3总结:get

    4 一行cell要展示在屏幕上,至少要执行5遍TableView的heightForRowAtIndexPath方法:

    TableView配置部分:

    ① 当TableView视图即将展现在屏幕上时,会把所有行的行高数据进行拉取。

    ②当TableView在执行setLayoutMargins方法进行自身布局时会把所有行高数据进行拉取。

    ③TableView在执行layoutSubViews方法进行子视图布局时会再次把所有行高数据进行拉取。

    TableViewCell配置部分:

    ④当使用cellID进行与TableView绑定的cell获取时会拉取本行cell的高度数据。

    ⑤当cell进行layoutSubViews方法进行布局时会再次拉取本行cell的高度数据。

    相关文章

      网友评论

          本文标题:10(四)UITableView的cell高度缓存

          本文链接:https://www.haomeiwen.com/subject/edzinttx.html