Self-Sizing在iOS11下是默認開啓的,Headers, footers, and cells都默認開啓Self-Sizing,全部estimated 高度默認值從iOS11以前的 0 改變爲UITableViewAutomaticDimension緩存
estimatedRowHeight這個屬性是給tableView每行設置預估行高,若是目前項目中沒有使用estimateRowHeight屬性,在iOS11的環境下就要注意了,由於開啓Self-Sizing以後,tableView是使用estimateRowHeight屬性的,這樣就會形成contentSize和contentOffset值的變化,在估算行高機制下,contentSize的值是一點點地變化更新的,全部cell顯示完後纔是最終的contentSize值。由於不會緩存正確的行高,tableView reloadData的時候,會從新計算contentSize,就有可能會引發contentOffset的變化,就出現上述奇怪的現象。app
解決方法:
在appdelegate.m文件中,加上這幾句代碼:.net
//能夠經過如下方式禁用blog
if (@available(iOS 11.0, *)) {io
UITableView.appearance.estimatedRowHeight = 0;
UITableView.appearance.estimatedSectionFooterHeight = 0;
UITableView.appearance.estimatedSectionHeaderHeight = 0;
}
轉自:https://blog.csdn.net/jennyhermes/article/details/79628952
table