改变textView Frame的值
@implementation TextViewCell
- (void)textViewDidChange:(UITextView *)textView
{
CGRect bounds = textView.bounds;
// 计算 text view 的高度
CGSize maxSize = CGSizeMake(bounds.size.width, CGFLOAT_MAX);
CGSize newSize = [textView sizeThatFits:maxSize];
bounds.size = newSize;
textView.bounds = bounds;
// 让 table view 重新计算高度
UITableView *tableView = [self tableView];
[tableView beginUpdates];
[tableView endUpdates];
}
text Marsonry布局
[_iContentTextView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.contentView.mas_top);
make.left.mas_equalTo(self.contentView.mas_left).offset(kAspectWidth(10));
make.right.mas_equalTo(self.contentView.mas_right).offset(kAspectWidth(-10));
make.height.mas_greaterThanOrEqualTo(kAspectHeight(50));
make.bottom.mas_equalTo(self.contentView.mas_bottom).offset(kAspectHeight(-10));
}];
注意点
1.使用 iOS 8 的特性自动计算 cell 高度,或者在 heightForRow 中自己实现计算高度的代码。
2.UITextView 的 scrollEnable 要设置 NO
3.更新 table view 的高度使用 beginUpdates 和 endUpdates
4.Text view 更新内容后要保存数据,以免重新加载 cell 时数据丢失
网友评论