崩壊をアニメーション化するtableViewヘッダ(ピンク)のトラブルシューティングを試みています。 tableViewHeaderの高さが縮小されるにつれて、テーブルビューのセルはtableView(オレンジ色)の上部でプルアップされます。開始と終了の状態は正しいですが、何とかしてテーブルビューのセルは異なるレートでアニメートされています。何かがここではっきりと間違っています、私はちょうどそれが何であるかを突き止めるように見えません。UITableViewCellsは、collapseing tableHeaderViewとは異なるレートでアニメートします
セルフサイジングテーブルビューセルとtableView.rowHeight = UITableViewAutomaticDimension
を使用しているということが関係しているようです。固定高さのセルを使用すると、すべてが問題ありません。
開始状態:
ミドル状態(注:細胞は既にヘッダの下スライド):
ここにコードはありますか崩壊をアニメーション化する。
func collapseHeader() {
UIView.animate(withDuration: 0.25, delay: 0, options: .curveEaseIn, animations: {
self.tableView.beginUpdates()
if let header = self.tableView.tableHeaderView as? TopicTableHeaderView {
header.setHeaderState(state: .collapsed)
}
self.sizeHeaderToFit()
self.view.layoutIfNeeded()
self.tableView.endUpdates()
}) { (bool) in
print("collapse completed")
}
}
func sizeHeaderToFit() {
if let headerView = tableView.tableHeaderView {
let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
var frame = headerView.frame
frame.size.height = height
if headerView.frame.height != height {
headerView.frame = frame
tableView.tableHeaderView = headerView
headerView.setNeedsLayout()
headerView.layoutIfNeeded()
}
}
}