我知道當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