内容更改时调整UITableviewCell的大小

时间:2019-07-30 10:47:54

标签: uitableview autolayout

我有一个带有标签,按钮和大小为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)>"
)

0 个答案:

没有答案