-2

重複の可能性:
カスタムセルからロードするときにセルテーブルの高さを調整するにはどうすればよいですか?

別のカスタム クラス オブジェクトからセルをロードしているアプリケーションがあります。正常に動作していました。しかし、私の問題は、このサブクラスにテキスト ビューを追加していることです。そのテキスト ビューの内容に応じて、テーブル ビューのセルの高さを調整する必要があります。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0)
    { 
       return 125;
    }
    else
    {
        return  245;
    }
}

今、私はこのようにしています。しかし、カスタムクラスセルのテキストビューのコンテンツサイズに応じてセルの高さを変更したいです。誰でも私を助けることができますか?

4

1 に答える 1

0

これを見て簡単にできます:

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  UITableViewCell *cell;
  UILabel *label = nil;

  cell = [tv dequeueReusableCellWithIdentifier:@"Cell"];
  if (cell == nil)
  {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"Cell"] autorelease];

    label = [[UILabel alloc] initWithFrame:CGRectZero];
    [label setLineBreakMode:UILineBreakModeWordWrap];
    [label setMinimumFontSize:FONT_SIZE];
    [label setNumberOfLines:0];
    [label setFont:[UIFont systemFontOfSize:FONT_SIZE]];
    [label setTag:1];

    [[cell contentView] addSubview:label];
  }
}

次に、セルの高さを計算できます。ここに完全な例のリンクがあります

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
  NSString *text = [items objectAtIndex:[indexPath row]];

  CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);

  CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

  CGFloat height = MAX(size.height, 44.0f);

  return height + (CELL_CONTENT_MARGIN * 2);
}
于 2012-11-19T13:45:41.093 に答える