美文网首页
iOS 11 UITableView加载时乱跳问题

iOS 11 UITableView加载时乱跳问题

作者: 怎么老是ni | 来源:发表于2018-10-25 18:59 被阅读51次
    正常reload-1.gif
    异常reload-1.gif
    正常reload-2.gif
    异常reload-2.gif

    异常:

    经过测试,异常只出现在iOS 11+的设备上,查了一些资料发现是 Self-Sizing 在 iOS 11 下默认开启导致的.

    异常原因:

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

    异常解析:

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

    解决方案:

    关闭估算行高

    tableView.estimatedRowHeight = 0;
    

    当使用到SectionHeader或者SectionFooter的时候

    tableView.estimatedSectionHeaderHeight = 0;
    tableView.estimatedSectionFooterHeight = 0;
    

    相关文章

      网友评论

          本文标题:iOS 11 UITableView加载时乱跳问题

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