我正在尝试构建一个类似于iOS原生Reminders应用的应用。哪里有一个包含页眉和页脚的项目列表。每个单元格都包含UITextView
,用户在键入时会动态更改单元格高度。页脚视图包含相同的单元格视图,除了我希望它是一个页脚,因此它将粘贴到底部视图。我将单元格设置为动态高度。
checklistTable.rowHeight = UITableViewAutomaticDimension
checklistTable.estimatedRowHeight = 60
checklistTable.sectionFooterHeight = UITableViewAutomaticDimension
checklistTable.estimatedSectionFooterHeight = 60
这是键入时更新单元格高度的逻辑,这适用于常规单元格,但不适用于页脚视图。我设置了一个断点 viewForFooterInSection,在初始加载后从未调用过。
func textViewDidChange(_ textView: UITextView) {
let startHeight = textView.frame.size.height
let calcHeight = textView.sizeThatFits(textView.frame.size).height
if startHeight != calcHeight {
UIView.setAnimationsEnabled(false)
tableView?.beginUpdates()
if cellType == .footer {
tableView?.reloadSections(IndexSet(integer: 0), with: .automatic)
}
tableView?.endUpdates()
UIView.setAnimationsEnabled(true)
}
}
有人能指出我正确的方向吗?感谢
答案 0 :(得分:2)
启用&在UIView
&上禁用动画同时调用tableView?.beginUpdates()
看起来含糊不清
简单地说,调用reloadSections
应该有效,例如:
if startHeight != calcHeight {
if cellType == .footer {
tableView?.reloadSections(IndexSet(integer: 0), with: .automatic)
}
}