MJRefresh 上拉加載刷新完跳一下問題!

轉: 在 iOS8 引入 Self-Sizing 之後,我們可以通過實現estimatedRowHeight相關的屬性來展示動態的內容,實現了estimatedRowHeight屬性後,得到的初始contenSize是個估算值,是通過estimatedRowHeight乘以 cell的個數得到的,並不是最終的contenSize,只是當前屏幕能夠顯示的cell個數,滑動時,tableView不停地得到新的cell,更新自己的contenSize。

Self-Sizing在iOS11下是默認開啓的,Headers, footers, and cells都默認開啓Self-Sizing,所有estimated高度默認值從iOS11之前的 0改變爲UITableViewAutomaticDimension:

如果目前項目中沒有使用estimateRowHeight屬性,在[ iOS11~ iOS12 ] 的環境下就要注意了,因爲開啓Self-Sizing之後,tableView是使用estimateRowHeight屬性的,這樣就會造成contentSize和contentOffset值的變化,如果是有動畫是觀察這兩個屬性的變化進行的,就會造成動畫的異常,因爲在估算行高機制下,contentSize的值是一點點地變化更新的,所有cell顯示完後纔是最終的contentSize值。因爲不會緩存正確的行高,tableView reloadData的時候,會重新計算contentSize,就有可能會引起contentOffset的變化。

2,解決方案:關閉默認開啓的選項

OC

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

Swift

     tableView?.estimatedRowHeight = 0
     tableView?.estimatedSectionHeaderHeight = 0
     tableView?.estimatedSectionFooterHeight = 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章