0

我有一个UITableViewCell根据其中的内容动态调整大小的。我这样做heightForRowAtIndexPath如下:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
  if (indexPath.section == 1 && indexPath.row == 1) {
    NSDictionary *fields = self.messageDetailsDictionary[@"fields"];
    NSString *cellText = fields[@"message_detail"];
    UIFont *cellFont = [UIFont systemFontOfSize:14.0];
    CGSize constraintSize = CGSizeMake(self.tableView.frame.size.width - 50.0f, MAXFLOAT);
    CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
    return labelSize.height + 20.0f;
  } else {
    return tableView.rowHeight;
  }
}

cellForRowAtIndexPath我自定义单元格中,如下所示:

case 1:{
  UITableViewCell *cell = [[UITableViewCell new] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"DetailCell"];
  if (cell == nil) {
    cell = [[UITableViewCell new] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"DetailCell"];
  }
  NSDictionary *fields = self.messageDetailsDictionary[@"fields"];
  cell.selectionStyle = UITableViewCellSelectionStyleNone;
  cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
  cell.textLabel.font = [UIFont systemFontOfSize:14.0];
  cell.textLabel.numberOfLines = 0; // This means multiline
  cell.textLabel.text = fields[@"message_detail"];
  return cell;
}

这一切都很好,但是我希望单元格的内容能够检测电话号码、日期/时间等。所以我认为我需要将内容放入UITextView其中UITableViewCell以使这成为可能。

如何UITextView通过修改上面的代码来动态调整大小并将其添加到包含内容的单元格中?示例代码请提供答案,因为我已经尝试将 UITextView 添加为单元格 contentView 的子视图,但它没有像我预期的那样工作。

4

2 回答 2

0

您可以使用sizeToFitorsizeThatFits:方法来调整UITextView对象的大小

于 2013-02-20T08:22:37.147 回答
0

创建单元格时,您需要添加 textView 作为其子视图,无需单独设置 textView 大小。您只需要在返回行的高度时添加边距值

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
于 2013-02-20T08:45:13.930 回答