2011-01-08 96 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適當的位置。