【发布时间】:2016-11-07 23:04:29
【问题描述】:
我正在尝试对正在为折叠设置动画的 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()
}
}
}
【问题讨论】:
标签: ios uitableview animation autolayout