reloadSections:withRowAnimation:

2019-12-24  本文已影响0人  大风天上来

参考链接:https://blog.csdn.net/htl55555/article/details/82712401

在iOS11上调用reloadSections:withRowAnimation:会出现tableview向下偏移的问题。因为tableview的load和reload,是先根据预估行高做一个轮廓的搭建,再把自定义的数据填充进去做高度的微调。所以假如不做预先的设置,默认是根据UITableViewAutomaticDimension做预估行高的(好像是44),这样的渲染导致了界面抖动,甚至到时scrollVie上移或下移。

因此需要在init方法中设置 预估行高:

self.tableView.rowHeight = 70;

self.tableView.sectionHeaderHeight = 80;

self.tableView.estimatedRowHeight = 70;

self.tableView.estimatedSectionHeaderHeight = 81;

注意有写博客上写的是:

self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;

这样设置有时还是会有问题,所以需要设置estimatedSectionHeaderHeight的值一定要大于sectionHeaderHeight的值,特别是做类似于QQ联系人的那种展开与收缩的效果时。


由于我这边cell行高是手动设置的,就没有处理rowHeight。只对sectionHeaderHeight进行了设置。当sectionHeaderHeight值 小于或者等于 estimatedSectionHeaderHeight 时,依然有下移的问题。所以我设置estimatedSectionHeaderHeight在真实高度上+1,问题得到解决。
上一篇下一篇

猜你喜欢

热点阅读