我在我的UIViewController
中有一個正常的UITableView
,約束爲全屏。這個tableView有一個自定義的互動tableHeaderView
。 tableHeaderView的大小是動態的,並且可以自行擴展。 headerView有一個textField,並且會根據textField是否有焦點來改變它自己的大小。單元在UITableView動畫中消失
問題是,在更改tableHeaderView的大小時,屏幕底部的單元格並不總是正確動畫。 我在我的animation-block中調用layoutIfNeeded()
之後的tableView.beginUpdates()
和tableView.endUpdates()
。這必須完成,否則單元格根本不會遵循動態大小。
我製作了這個gif。在動畫過程中特別注意底部的單元格。我大大減慢了動畫速度,所以很容易看出問題所在。
猜測:在我看來,像的tableView爲cellForRow:indexPath:
儘快調用的動畫開始,並以某種方式找出什麼狀態動畫之後,整個的tableView將是,在去除不需要的細胞,即使動畫還沒有完成。 同樣,摺疊標題時:最底層的單元格不像已加載單元格一樣動畫。他們用不同的動畫動畫..
這是爲什麼發生?這是可以預防的嗎?
編輯:動畫代碼
self.navigationController?.setNavigationBarHidden(isEditing, animated: true)
var frame = tableHeaderView.frame
frame.size.height = tableHeaderView.headerHeight(forEditing: isEditing)
UIView.animate(withDuration: 0.3, animations: {
if isEditing{
let point = CGPoint(x: 0, y: -self.topLayoutGuide.length)
self.tableView.setContentOffset(point, animated: false)
}
tableHeaderView.frame = frame
tableHeaderView.layoutIfNeeded()
self.view.layoutIfNeeded()
self.tableView.beginUpdates()
self.tableView.endUpdates()
}) { [weak self](completed:Bool) in
//Do stuff
}
你能顯示代碼嗎? – jalone
在故事板中 - 選擇場景 - >顯示屬性檢查器 - >在頂部條之下,使頂部欄中的頂出。 – Pavankumar
@Sti:使用應該共享一些代碼。 – Poles