使用 Auto Layout 让 UITableViewCell 自适应 UITextView 高度,效果演示:
99-projects-of-swift/029-tableviewcell-self-adaption
预备步骤
- 给 textView 上下左右建立相对于 cell 的约束
- 取消 textView 的
Scrolling Enabled
- 设置 tableView 估算高度
tableView.estimatedRowHeight = 70
- 设置
textView.delegate = self
关键点
如果在 textViewDidChange(textView:)
调用 tableView.reloadData()
会造成 textView 失去焦点,键盘隐藏。
解决方法:
func textViewDidChange(textView: UITextView) { |
这里带来了一个问题,当 textView 长度超过一屏或者过长时,在输入时 tableView 会跳动滚动 jumping and stuttering。
更好的解决方法:
func textViewDidChange(textView: UITextView) { |
禁用动画和重建表视图的内容偏移修正抖动。
References
– EOF –