2009-06-11 41 views
0

我在自定義UITableView單元格中顯示多行UILabel時遇到問題。我目前使用這種計算單元的兩面高度如何修復溢出其包含UITableViewCell的多行UILabel?

...

NSString *cellText = [howtoSection objectAtIndex:row]; 
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:15.0]; 
CGSize constraintSize = CGSizeMake(260.0f, MAXFLOAT); 
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; 

return labelSize.height + 20; 

...這是對標籤本身。

// Calc the height 
NSString *cellText = [howtoSection objectAtIndex:row]; 
CGSize constraintSize = CGSizeMake(260.0f, MAXFLOAT); 
CGSize labelSize = [cellText sizeWithFont:cell.textLabel.font constrainedToSize:constraintSize lineBreakMode:cell.textLabel.lineBreakMode]; 

// Create the label frame 
CGRect newFrame = cell.contentLabel.frame; 
newFrame.size.height = labelSize.height; 
cell.contentLabel.frame = newFrame; 

[cell.contentLabel setText:[howtoSection objectAtIndex:row]]; 

一切都按計劃運作,除了標籤被推下來,並從它的單元格。如果不是這個明顯的頂部邊距,一切都會適合。

下面是我所看到的在模擬器上的圖片的鏈接...

iPhone Rendering Bug

這裏任何幫助將不勝感激。

回答

1

我沒有看到你在你顯示的代碼中設置cell.contentLabel.font

此外,標籤尺寸計算使用cell.textLabel.font來計算其大小,但使用contentLabel變量呈現。

是否有可能使用與計算不同的字體進行渲染?

+0

你說得對。我不敢相信我搞砸了。謝謝您的幫助。 – 2009-06-12 06:31:21

0

你如何將你的標籤添加到contentView?它看起來像原來的定位是錯誤的,因爲高度看起來是正確計算的。如果您註釋掉分配新框架,標籤是否處於正確的位置?我的賭注是,它不是。

+0

恐怕我不明白你的意思,將它添加到contentView?自定義單元格是在IB中創建的,我用這種方式添加了標籤。 註釋掉分配新幀的行後,我所看到的是我的文本的第一行在正確的位置。 – 2009-06-12 06:21:16