在键入文本时动态更改单元格的高度,并重新加载包含的tableview以进行resize
我正在尝试使用具有多种单元格类型的UITableView。 我的一个单元格需要在键入文本时动态更改其高度。 这是改变单元格高度的代码(在单元格的类中),这很好用:
func textViewDidChange(_ textView: UITextView) { var newFrame:CGRect = noteTextView.frame newFrame.size.height = noteTextView.contentSize.height noteTextView.frame = newFrame self.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: self.frame.width, height: noteTextView.contentSize.height) }
但细胞覆盖着他下面的细胞。 在父tableView成员上添加这些行也没有帮助:
mParentTableView.setNeedsLayout() mParentTableView.layoutIfNeeded()
知道如何告诉tableView重新计算其包含的单元格大小吗?
(XCode 9,Swift 4)
使用tableView的[tableView beginUpdates]
和[tableView endUpdates]
将解决此问题。 有关更多信息,请参阅此答案 。
像这样在你的UITableViewCell
设置委托
var textDidChanges: (() -> Void)? = nil func textViewDidChange(_ textView: UITextView) { textDidChanges?() }
和你的tableView cellForRowAt
cell.textDidChanges = { self.tableView.beginUpdates() self.tableView.endUpdates() }
如何在UITextView的基础上制作一个内置UITextView的UITableViewCell,动态调整其高度?