在表滚动之前,单元格标签不会调整大小

时间:2013-04-03 11:18:19

标签: ios objective-c uitableview uilabel

我正在使用此代码来调整维护单元格标题的标签。问题是在滚动表格之前单元格标签没有调整大小。细胞需要消失才能正确调整其标签大小。如何在不必先滚动的情况下调整所有单元格标签的大小?

感谢阅读。

- (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;
}

3 个答案:

答案 0 :(得分:0)

尝试在

中编写相同的代码 UItableViewController的

willDisplayCell方法

另一种方法是......在您的ExampleTableViewCell类实现

- (void)layoutSubviews{
}

在上面的功能中设置标题的框架。它应该工作

答案 1 :(得分:0)

你必须实现方法heightForRowAtIndexPath并返回单元格的高度然后你的问题解决了: - )

答案 2 :(得分:-1)

我发现Matt Long的解决方案非常有用(http://www.cimgf.com/2009/09/23/uitableviewcell-dynamic-height/)。