我正在尝试排除动态崩溃的tableView标题(粉红色)。随着tableViewHeader高度缩小,表视图单元格应该以其tableView(橙色)的顶部向上拉。开始和结束状态是正确的,但不知何故,表格视图单元格以不同的速率进行动画制作。这里显然有些错误,我似乎无法确定它是什么。
这似乎与我使用自我调整表格视图单元格和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()
}
}
}
答案 0 :(得分:0)
问题就在于我打电话给self.tableView.beginUpdates()
的地方。我把它移到self.tableView.endUpdates()
正上方的那一行,这解决了问题。