4

このコードを使用して、セルのタイトルを保持するラベルのサイズを変更しています。問題は、テーブルをスクロールするまでセル ラベルのサイズが変更されないことです。ラベルのサイズを正しく変更するには、セルを非表示にする必要があります。以前にスクロールしなくても、すべてのセル ラベルのサイズを適切に変更するにはどうすればよいですか?

読んでくれてありがとう。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    ExampleTableViewCell *cell = (ExampleTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"ExampleTableViewCell"];

    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ExampleTableViewCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }

    cell.title.text = [self.test objectAtIndex:[indexPath row]];

    //Calculates the expected size based on the font and linebreak mode of the label.
    CGSize maximumLabelSize = CGSizeMake(200, [UIScreen mainScreen].bounds.size.width);

    CGSize expectedLabelSize = [cell.title.text sizeWithFont:cell.title.font constrainedToSize:maximumLabelSize lineBreakMode:cell.title.lineBreakMode];

    // Adjusts the label the the new height.
    CGRect newFrame = cell.title.frame;
    newFrame.size.height = expectedLabelSize.height;
    cell.title.frame = newFrame;

    return cell;
}
4

3 に答える 3

0

メソッド heightForRowAtIndexPath を実装し、セルの高さを返してから問題を解決する必要があります:-)

于 2013-06-27T05:21:27.813 に答える
-1

I found Matt Long's solution really helpful (http://www.cimgf.com/2009/09/23/uitableviewcell-dynamic-height/).

于 2014-02-24T16:52:14.287 に答える