uitableview - 内容更改时调整 UITableviewCell 的大小
问题描述
我有一个带有标签、按钮和大小为 0 的隐藏文本字段的 TableViewCell。如果用户点击按钮,文本字段应该变得可见。到目前为止,一切都很好。但在控制台中,我在该动画期间收到约束错误,因为文本字段需要的空间比单元格当前的大小要多。
如何避免约束错误?
这是我的实现:
func showTextField(show:Bool){
if show{
if textFieldHeightConstraint.constant != 200{
UIView.animate(withDuration: 0.4) { [weak self] in
self?.textFieldHeightConstraint.constant = 200
self?.feedbackTextView.isHidden = false
self?.viewModel?.refreshTableView()
}
}
}
else{
textFieldHeightConstraint.constant = 0
feedbackTextView?.text = "TODO"
feedbackTextView.isHidden = true
viewModel?.refreshTableView()
}
}
//然后在控制器中:
func refreshTableView(){
tableView.beginUpdates()
tableView.endUpdates()
}
约束错误:
(
"<NSLayoutConstraint:0x600000a3fa70 UITextView:0x7f8cd4073e00'TODO'.height == 200 (active)>",
"<NSLayoutConstraint:0x600000a13020 V:|-(16)-[UILabel:0x7f8cd2e19130'M\U00f6chten Sie zu dieser Rec...'] (active, names: '|':UITableViewCellContentView:0x7f8cd2e140d0 )>",
"<NSLayoutConstraint:0x600000a0fb10 V:[UILabel:0x7f8cd2e19130'M\U00f6chten Sie zu dieser Rec...']-(8)-[UIButton:0x7f8cd2e16ea0'Add remark'] (active)>",
"<NSLayoutConstraint:0x600000a0a490 V:[UITextView:0x7f8cd4073e00'TODO']-(>=16)-| (active, names: '|':UITableViewCellContentView:0x7f8cd2e140d0 )>",
"<NSLayoutConstraint:0x600000a32440 V:[UIButton:0x7f8cd2e16ea0'Add remark']-(8)-[UITextView:0x7f8cd4073e00'TODO'] (active)>",
"<NSLayoutConstraint:0x600000a484b0 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x7f8cd2e140d0.height == 156 (active)>"
)
解决方案
推荐阅读
- mysql - 如何指示mysql的ngram解析器不切号
- swift - Swift NavBar 隐藏 NavBarItem
- javascript - 如何获取对象的属性
- node.js - 找到在NodeJS中找到对象列表的欧几里得距离的最佳方法
- javascript - 方法每 10 秒触发一次并在 app.component.html 文件中重复运行
- vba - 组合框来选择具有多个重复项的值并以每个重复记录的值逐行填充表单中的文本框?
- flutter - 在 initState Flutter 中初始化下拉菜单的正确方法
- reactjs - 使用来自 prop-types 的 InferProps<> 时,键入 props 会传播
- python - 使用 python 从 XML 中获取只需要的元素时出现错误“list.remove(x): x not in list”
- firebase - Firebase Cloud Function Set Timeout 540s 但以 60s 结束