在开发中经常会遇到这样的需求:修改用户、商品等信息时由于内容过多需要折行显示。本篇文章解决了在一个动态的UITabelView中,cell会根据每行TextView输入的内容实时改变cell和TabelView的高度。
这是我想要的效果:
实现上面效果的基本原理:
- 在 cell 中设置好 textView 的 Autolayout,让 cell 可以根据内容自适应大小
- textView 中输入内容,根据内容更新 textView 的高度
- 调用 tableView 的 beginUpdates 和 endUpdates,重新计算 cell 的高度
- 将 textView 更新后的数据保存,以免 tableView 滚动超过一屏再滚回来 textView 中的数据又不刷新成原来的数据了。
一、准备工作
创建项目,自定义创建UITabelViewCell勾选XIB。(一笔带过)
二、为cell中的textView添加约束
为了查看方便我给textView添加了灰色背景
如何为控件添加约束不了解的同学晚上加加点好好学,这里不做过多介绍。
⚠️注意:设置 UITextView 的 scrollEnable 为 NO。这一点很关键,如果不设置为 NO,当UITextView 输入内容超出我们 约束的 frame 后,重新设置 textView 的高度会失效,并出现滚动条。
三、实际操作
1、让UITextView遵循代理UITextViewDelegate