美文网首页
iOS: 如何在TableViewCell中实现UITextVi

iOS: 如何在TableViewCell中实现UITextVi

作者: 棋剑千秋 | 来源:发表于2018-10-22 11:48 被阅读0次
  1. 在初始化UITableView的时候,设置动态计算高度,并给一个初始值44
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 44;
  1. 在heightForRowAtIndexPath中设置
return UITableViewAutomaticDimension;
  1. 在textViewDidChange事件中计算UITextView的高度并刷新
- (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 重新计算高度
    //textView的高度不想等就更新 让 table view 重新计算高度
    if (bounds.size.height != self.contentView.bounds.size.height) {
        UITableView *tableView = [self tableView];
        [tableView beginUpdates];
        [tableView endUpdates];
    }
    self.contentView.bounds = bounds;
}

//找出上层的UIView即UITableView

- (UITableView *)tableView {
    UIView *tableView = self.superview;
    while (![tableView isKindOfClass:[UITableView class]] && tableView) {
        tableView = tableView.superview;
    }
    return (UITableView *)tableView;
}

相关文章

网友评论

      本文标题:iOS: 如何在TableViewCell中实现UITextVi

      本文链接:https://www.haomeiwen.com/subject/uqawzftx.html