我有一個UITableView
(分組!),需要計算兩種樣式的單元格的高度:UITableViewCellStyleDefault
和UITableViewCellStyleValue2
。heightForRowAtIndexPath更長的NSStrings
這是我如何做到這一點的UITableViewCellStyleDefault
:
CGSize textSize = {300.f, 200000.0f};
CGSize size = [myTextString1 sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
size.height += 30.0f;
result = MAX(size.height, 44.0f);
而對於UITableViewCellStyleValue2
:
CGSize textSize = {207.f, 200000.0f};
CGSize size = [myTextString2 sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
size.height += 30.0f;
result = MAX(size.height, 44.0f);
我的問題是,他們返回不正確的高度,我認爲這是textSize
哪裏我使用不正確的數字。對於長文本,底部部分被縮短(通常只是一個帶有幾個字的行),並且對於兩個CellStyles,它們在單元格中的文本之上和之下都有奇怪的間距。
對於UITableViewCellStyleValue2
我得到的寬度大小(207.0f
)使text.backgroundColor紅色,然後只是計算框的大小。 300.0f
UITableViewCellStyleDefault
的寬度與的單元格大小有關。
有誰知道哪些值我需要使用正確計算NSString
的大小,從而得到適當的高度,我的電池?
感謝
謝謝。我以同樣的方式獨自做了一件事。我發現我在使用Value2單元格時遇到問題,因爲我認爲它們是fontSize 14,實際上它們是15. 對於您的代碼,您可能需要添加: result = MAX(labelsize.height + 15 ,44.0f); 以防萬一,如果單元格是空的或少於2行,它會返回最小行高爲44.0f,這是正常的。如果只有一條線,它會使它小於44.0f。 – runmad 2009-07-27 19:40:03