我有一个表视图,类似于Mail中的复合屏幕,其中一个单元格用于文本输入。我希望该单元格通过使用自动布局将单元格的contentView限制到其UITextView子视图来自动调整大小。表视图的rowHeight和estimatedRowHeight设置为UITableViewAutomaticDimension。此外,text视图的scrollEnabled属性设置为false,以便报告其intrinsicContentSize。
但是,当用户输入文本行时,单元格不会更新其高度,即使文本视图本身确实更新了其内部内容大小。据我所知,手动请求的唯一方法是表视图调用beginUpdates()和endUpdates()。然后正确更新单元格的高度,但这也会导致重新布局整个表视图。这是(别人的) 演示问题的示例代码。
如何在不布局整个表视图的情况下反映单元格文本视图中的更改?
发布于 2016-02-07 21:47:31
不能更改现有UITableViewCell的高度。您要告诉UITableView单元格无效,然后重新加载它。
在重新加载单元格(cellForRowAtIndexPath)时,您可以传递新的更新的单元格。使用tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)触发单个单元格刷新。
reloadRowsAtIndexPaths并没有reloadData()那么激烈。这是一个准时的索引刷新,不需要被tableView.beginUpdates和tableView.endUpdates包围,您可以提供自己选择的动画方法,比如.Fade。
参见reloadRowsAtIndexPaths(_:withRowAnimation:)中的文档。
还可以访问这个堆栈溢出回答,它详细描述了更改单元格高度的情况。

https://stackoverflow.com/questions/35259289
复制相似问题