iOS: 如何在TableViewCell中实现UITextVi

2018-10-22  本文已影响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;
}
上一篇 下一篇

猜你喜欢

热点阅读