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