我知道当UIKit呈现单元格时,它使用tableView:heightForRowAtIndexPath:
来计算高度。我的问题是,如何以及如何确定实际的UITableViewCell
。我想构建动态单元格,并需要计算单元格内的文本位置。我相信我可以使用self.bounds和self.frame - 我只是对那些被设置的点感兴趣 - 即使使用dequeueReusableCellWithIdentifier
。UITableViewCell的高度如何设置
感谢。
我知道当UIKit呈现单元格时,它使用tableView:heightForRowAtIndexPath:
来计算高度。我的问题是,如何以及如何确定实际的UITableViewCell
。我想构建动态单元格,并需要计算单元格内的文本位置。我相信我可以使用self.bounds和self.frame - 我只是对那些被设置的点感兴趣 - 即使使用dequeueReusableCellWithIdentifier
。UITableViewCell的高度如何设置
感谢。
从tableView:cellForRowAtIndexPath:
返回单元格后,tableview将设置许多属性,包括单元格的边界,然后调用tableView:willDisplayCell:forRowAtIndexPath:
。该调用之后的唯一修改是设置alpha/frame,并且即使只在动画行时也是如此。
鉴于此,如果您使用的是股票UITableViewCell
,则可以在tableView:willDisplayCell:forRowAtIndexPath:
中布局文本,并确保该单元格已具有正确的宽度/高度。也就是说,如果您所做的不仅仅是基础知识,您可能需要考虑继承UITableViewCell
。在你的子类中,你可以在layoutSubviews
中布置你的字段,并确保你的单元格总是正确布局。
可以使用heightForRowAtIndexPath
委托,像这样:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CGFloat result;
result = 120.0f;
return result;
}
上面的例子将设置任何单元格的帽子在canEditRowAtIndexPath
委托创建。
您也可以使用区段和行值来确定哪些单元/区段的高度已设置。
可以扩展自定义单元格
- (void)drawRect:(CGRect)rect
{
//You need to do your calculation for
[super drawRect:rect];
}
你需要做你的计算,使之出现在细胞中的drawRect适当的位置。
感谢您的帮助,但我感兴趣的是UITableViewCell知道它的高度 - 而不是告诉UITableViewController单元的高度应该在哪里。 – Brian 2011-01-08 03:57:22
return cell,这就是UITableView寻找cellHeight的要点。 – WrightsCS 2011-01-08 03:59:30
我想我应该问,在什么时候我的UITableViewCell知道它的高度,所以我可以调用[UITableViewCell setNeedsDisplay]? – Brian 2011-01-08 04:16:12