ios 单元格中UITextView 高度自适应

在单元格中使用UITextView时,由于输入内容的不确定,无法事先确定单元格的高度(UITextView相对于单元格的约束已设定的情况),就需要根据UITextView的高度自适应单元格的高度。

方案:

1、UITextView约束的设置,我这里设置约束使用的是SnapKit;

 tableViewCell.contentView.addSubview(textView)

 textView.snp.makeConstraints { (make) in
            make.left.equalTo(15)
            make.right.equalTo(-15)
            make.top.equalTo(titleLabel.snp.bottom).offset(5)
            make.height.greaterThanOrEqualTo(20)        // 事先设置一个高度,保证UITextView能显示出来
        } 

2、实现UITextView代理方法:

func textViewDidChange(_ textView:UITextView) {
        var bounds:CGRect = textView.bounds
        let maxSize = CGSize(width:bounds.size.width,height:1000)   // height可以根据需要自己修改
        let newSize = textView.sizeThatFits(maxSize)
        bounds.size = newSize
        self.fbmInventoryRecord?.inventoryDescirbe = textView.text
        if refreshTableCallBack != nil {
            refreshTableCallBack!()                  //回调方法,刷新单元格 
        }

}


3、刷新单元格:回调到单元格之后刷新

cell?.refreshTableCallBack = { [weak self] in
        self?.tableView.beginUpdates()
        self?.tableView.endUpdates()
}

4、最最最重要的设置:

a、UITextView一定要设置成不可以滚动,即:

textView.isScrollEnabled = false

b、必须事先给textView一个高度(约束中的代码:make.height.greaterThanOrEqualTo(20)),不然UITextView显示不出来,更不要说编辑了。

猜你喜欢

转载自blog.csdn.net/qingyou193301/article/details/80709176
今日推荐