如何设置UITableViewCell的高度

时间:2011-01-08 01:22:43

标签: iphone ios uikit uitableview

我知道当UIKit呈现一个单元格时,它使用tableView:heightForRowAtIndexPath:来计算高度。我的问题是,如何以及何时在实际UITableViewCell上设置。我想构建动态单元格,并需要计算单元格中文本的位置。我相信我可以使用self.bounds和self.frame - 我只是好奇这些设置 - 即使使用dequeueReusableCellWithIdentifier

感谢。

3 个答案:

答案 0 :(得分:5)

tableView:cellForRowAtIndexPath:返回单元格后,tableview设置了许多属性,包括单元格的边界,然后调用tableView:willDisplayCell:forRowAtIndexPath:。该调用之后的唯一修改是设置alpha / frame,甚至只有在为该行设置动画时才会进行修改。

鉴于此,如果您使用的是股票UITableViewCell,则可以在tableView:willDisplayCell:forRowAtIndexPath:中布置文本,并确保该单元格已具有正确的宽度/高度。也就是说,如果您正在做的不仅仅是基础知识,您可能需要考虑继承UITableViewCell。在您的子类中,您可以在layoutSubviews中布置字段,并确保您的单元格始终正确布局。

答案 1 :(得分:0)

您可以使用heightForRowAtIndexPath委托,如下所示:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat result;
    result = 120.0f;
    return result;
}

上面的示例将设置在canEditRowAtIndexPath委托中创建的任何单元格帽。

您也可以使用section和row值来确定设置高度的单元格/部分。

答案 2 :(得分:0)

您可以扩展自定义单元格

- (void)drawRect:(CGRect)rect
{
//You need to do your calculation for 
[super drawRect:rect];
}

您需要进行计算,使其显示在drawRect中单元格的正确位置。