UITableView中的UITextView,使用AutoLayout进行平滑展开

问题描述:

我在每个UITableViewCell中都有一个可编辑的UITextViewUITableView中的UITextView,使用AutoLayout进行平滑展开

UITextViews精细调整预加载文本(经heightForRowAtIndexPath计算),但我不知道如何获得平滑缩放动态添加文本时使用AutoLayout。它似乎被切断了。

使用AutoLayout,如何平滑调整UITableViewCellUITextView以适合输入到UITextView的文本?

你不能。表视图单元格不通过布局约束来派生它的高度,而是通过委托方法tableView:heightForRowAtIndexPath:

你大概可以达到你所追求这样的效果:

  • 引脚文本以单元格内容视图顶部和底部
  • 在您的文本视图委托方法,重新计算文本大小因为它是进入
  • 如果要求大小的变化,只要更新模型中的高度是你的表视图存储
  • 呼叫beginUpdatesendUpdates。这将导致它重新调整高度,并为新尺寸设置动画(通过扩展,也调整文本视图的大小)。
+0

像一个魅力:) –

接受的答案是不推荐使用的一个,存在的iOS 8 SDK这一个干净的解决方案

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

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

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

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

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