2

さて、これを繰り返しの質問としてマークする前に、読んでください。の動的なサイズ変更のためにCIMGFによって提供されたコードを実装しましたUITableViewCell。初めて動作しましたが、現在は動作していないようです。奇妙ですよね?とにかく、ここにコードスニペットがあります:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    NSString *text = [[buzzList objectAtIndex:[indexPath row]] objectForKey:@"description"];
    CGSize constraint = CGSizeMake(260, 20000.0f);
    CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
    CGFloat height = size.height;

    return height +25 +(CELL_CONTENT_MARGIN * 2);
}

対応するコードcellForRowAtIndexPathは次のとおりです。

[cell.descriptionLabel setLineBreakMode:UILineBreakModeWordWrap];
[cell.descriptionLabel setMinimumFontSize:FONT_SIZE];
[cell.descriptionLabel setNumberOfLines:0];
[cell.descriptionLabel setFont:[UIFont systemFontOfSize:FONT_SIZE]];

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

CGSize size = [[[buzzList objectAtIndex:indexPath.row] objectForKey:@"description"] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
cell.descriptionLabel.text=[[buzzList objectAtIndex:indexPath.row] objectForKey:@"description"];
CGRect rect=CGRectMake(45, 20, 260, size.height);
[cell.descriptionLabel setFrame:rect];

値45、20、260は、セル内のテキストの開始点の正確な位置とその幅を取得するために私が設定したものです。値は正しく、変更する必要はありません。ただし、コードを実行すると、セルの適切な高さが得られ(テキストに応じて動的に調整可能)BUTdescriptionLabel最大2行のテキストが表示されます。その後、テキストを切り捨てます。:(

4

1 に答える 1

0

説明ラベルの制約には2つの定数CELL_CONTENT_WIDTHとが含まれCELL_CONTENT_MARGINていCGRectますが、作成している制約には数値(260)が含まれています。> 260の場合CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2)、これが問題になるはずです。

于 2012-05-24T20:03:47.423 に答える