相同的代碼舷礼,有的界面跳動鹃彻,有的界面不跳動;
跳動妻献、滑動浮声、閃動、漂移旋奢,不知道怎么描述泳挥,就是這么個現(xiàn)象
-
原因:
因為iOS 11后系統(tǒng)默認(rèn)開啟Self-Sizing;
Self-Sizing——官方文檔是這樣解釋的:大概就是說我們不用再自己去計算cell的高度了至朗,只要設(shè)置好這兩個屬性屉符,約束好布局,系統(tǒng)會自動計算好cell的高度。
IOS11以后矗钟,Self-Sizing默認(rèn)開啟唆香,包括Headers, footers。如果項目中沒使用estimatedRowHeight屬性吨艇,在IOS11下會有奇奇怪怪的現(xiàn)象躬它,因為IOS11之前,estimatedRowHeight默認(rèn)為0东涡,Self-Sizing自動打開后冯吓,contentSize和contentOffset都可能發(fā)生改變。
所以可以通過以下方式禁用:
-
解決方法:
在tableView初始化的地方加入下面代碼
self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;
然后再reloadData視圖漂移或者閃動就沒有了
感謝評論區(qū)清蒸魚躍龍門 的指導(dǎo):
文章添加評論內(nèi)容如下:
父類初始化的時候設(shè)置了estimatedRowHeight=44疮跑,
結(jié)果子類控制器頁面上拉完reloaddata出現(xiàn)了文中說的cell跳動問題组贺,
也就是不在原位置上了。此時我在子類設(shè)置estimatedRowHeight=0祖娘,
會導(dǎo)致布局錯亂失尖,全擠在一堆,
后來GitHub上找到說是:
estimatedRowHeight設(shè)置一個一定會大于
你真實cell高度的值渐苏,就完美解決了掀潮。無論怎么上拉,新內(nèi)容都只會在底部出現(xiàn)琼富,內(nèi)容區(qū)不再亂跳了仪吧。