4

UITextView在每个UITableViewCell.

UITextViews调整大小到预加载的文本(通过 计算)heightForRowAtIndexPath但我不确定如何在AutoLayout动态添加文本时使用平滑调整大小。它似乎被切断了。

使用AutoLayout,我怎样才能平滑调整 a 的大小UITableViewCellUITextView适应正在输入的文本UITextView

4

2 回答 2

7

接受的答案是已弃用的答案,在 iOS 8 sdk 中有一个干净的解决方案

在 viewDidLoad 中,告诉 tableView 自动计算行高:

tableView.estimatedRowHeight = 44.0f;
tableView.rowHeight = UITableViewAutomaticDimension;

实现 UITextViewDelegate 协议的 textViewDidChange: 方法,并告诉 tableView 在每次编辑文本时重新绘制自己:

- (void)textViewDidChange:(UITextView *)textView {
[tableView beginUpdates];
[tableView endUpdates];
}

并且不要忘记在 Storyboard/IB 或 tableView:cellForRowAtIndexPath 中的某处设置 UITextView 委托:

于 2015-03-12T12:45:04.207 回答
3

你不能。表格视图单元格不通过布局约束导出其高度,而是通过委托方法tableView:heightForRowAtIndexPath:

你大概可以像这样达到你想要的效果:

  • 将您的文本视图固定到单元格内容视图的顶部和底部
  • 在您的文本视图委托方法上,重新计算输入的文本大小
  • 如果需要更改尺寸,请更新模型中存储高度的任何位置
  • 在您的表格视图中调用beginUpdates和。endUpdates这将导致它重新查询高度,并动画到新的大小(通过扩展,调整文本视图的大小)。
于 2013-06-02T07:06:51.587 回答