2011-01-08 65 views
2

我知道当UIKit呈现单元格时,它使用tableView:heightForRowAtIndexPath:来计算高度。我的问题是,如何以及如何确定实际的UITableViewCell。我想构建动态单元格,并需要计算单元格内的文本位置。我相信我可以使用self.bounds和self.frame - 我只是对那些被设置的点感兴趣 - 即使使用dequeueReusableCellWithIdentifierUITableViewCell的高度如何设置

感谢。

回答

5

tableView:cellForRowAtIndexPath:返回单元格后,tableview将设置许多属性,包括单元格的边界,然后调用tableView:willDisplayCell:forRowAtIndexPath:。该调用之后的唯一修改是设置alpha/frame,并且即使只在动画行时也是如此。

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

0

可以使用heightForRowAtIndexPath委托,像这样:

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

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

您也可以使用区段和行值来确定哪些单元/区段的高度已设置。

+0

感谢您的帮助,但我感兴趣的是UITableViewCell知道它的高度 - 而不是告诉UITableViewController单元的高度应该在哪里。 – Brian 2011-01-08 03:57:22

+0

return cell,这就是UITableView寻找cellHeight的要点。 – WrightsCS 2011-01-08 03:59:30

+0

我想我应该问,在什么时候我的UITableViewCell知道它的高度,所以我可以调用[UITableViewCell setNeedsDisplay]? – Brian 2011-01-08 04:16:12

0

可以扩展自定义单元格

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

你需要做你的计算,使之出现在细胞中的drawRect适当的位置。

相关问题