通過實施tableView:estimatedHeightForRowAtIndexPath:
來使用估計的單元高度時,將UITableView
頂部滾動到頂部的正確方法是什麼?使用估計的單元高度滾動到頂部
我注意到,如果有足夠的估計錯誤,通常的方法不一定會滾動到頂端。
[self.tableView setContentOffset:CGPointMake(0, 0 - self.tableView.contentInset.top) animated:animated];
通過實施tableView:estimatedHeightForRowAtIndexPath:
來使用估計的單元高度時,將UITableView
頂部滾動到頂部的正確方法是什麼?使用估計的單元高度滾動到頂部
我注意到,如果有足夠的估計錯誤,通常的方法不一定會滾動到頂端。
[self.tableView setContentOffset:CGPointMake(0, 0 - self.tableView.contentInset.top) animated:animated];
我遇到過類似的問題(我沒有試圖將tableview手動滾動到頂部,但點擊狀態欄時視圖沒有正確滾動)。
我想出瞭解決這個問題的唯一方法,就是確保在你的tableView:estimatedHeightForRowAtIndexPath:
方法中,如果你知道它的話,你將返回實際的高度。
爲了提高效率,我的實現緩存了調用tableView:heightForRowAtIndexPath:
的結果,所以我只是在我的估計中查找這個緩存,看看我是否已經知道真正的高度。
我認爲問題來自於tableView:estimatedHeightForRowAtIndexPath:
被優先於tableView:heightForRowAtIndexPath:
優先調用,即使向上滾動已經被渲染的單元格。只是一個猜測。
這個怎麼樣代碼片段
[UIView animateWithDuration:0.0f animations:^{
[_tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO]; //1
} completion:^(BOOL finished) {
_tableView.contentOffset = CGPointZero; //2
}];
從https://github.com/caoimghgin/TableViewCellWithAutoLayout/issues/13
如何tableView.scrollToRow
靈感計算?爲我解決了這個問題。
夫特3示例:
tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: true)
嗯這不是通常的方法。 – Desdenova
@Desdenova什麼是?我想滾動到頂部,而不是第一個'indexPath'。 – hpique
滾動到一行(NSIndexPath)是唯一記錄的Apple滾動方式。設置內容偏移量與底層滾動視圖混淆。 – Desdenova