UITableView中的UITextView,使用AutoLayout进行平滑展开
问题描述:
我在每个UITableViewCell
中都有一个可编辑的UITextView
。UITableView中的UITextView,使用AutoLayout进行平滑展开
的UITextViews
精细调整预加载文本(经heightForRowAtIndexPath
计算),但我不知道如何获得平滑缩放动态添加文本时使用AutoLayout
。它似乎被切断了。
使用AutoLayout
,如何平滑调整UITableViewCell
和UITextView
以适合输入到UITextView
的文本?
答
你不能。表视图单元格不通过布局约束来派生它的高度,而是通过委托方法tableView:heightForRowAtIndexPath:
。
你大概可以达到你所追求这样的效果:
- 引脚文本以单元格内容视图顶部和底部
- 在您的文本视图委托方法,重新计算文本大小因为它是进入
- 如果要求大小的变化,只要更新模型中的高度是你的表视图存储
- 呼叫
beginUpdates
和endUpdates
。这将导致它重新调整高度,并为新尺寸设置动画(通过扩展,也调整文本视图的大小)。
答
接受的答案是不推荐使用的一个,存在的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:
像一个魅力:) –