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

sizeToFitまたはsizeThatFits:メソッドを使用してUITextViewオブジェクトのサイズを変更できます

于 2013-02-20T08:22:37.147 に答える
0

セルの作成中に、textView をそのサブビューとして追加する必要があり、textView のサイズを個別に設定する必要はありません。行の高さを返すときにマージン値を追加するだけです

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