如何修复溢出其包含UITableViewCell的多行UILabel?

问题描述:

我在自定义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

这里任何帮助将不胜感激。

我没有看到你在你显示的代码中设置cell.contentLabel.font

此外,标签尺寸计算使用cell.textLabel.font来计算其大小,但使用contentLabel变量呈现。

是否有可能使用与计算不同的字体进行渲染?

+0

你说得对。我不敢相信我搞砸了。谢谢您的帮助。 – 2009-06-12 06:31:21

你如何将你的标签添加到contentView?它看起来像原来的定位是错误的,因为高度看起来是正确计算的。如果您注释掉分配新框架,标签是否处于正确的位置?我的赌注是,它不是。

+0

恐怕我不明白你的意思,将它添加到contentView?自定义单元格是在IB中创建的,我用这种方式添加了标签。 注释掉分配新帧的行后,我所看到的是我的文本的第一行在正确的位置。 – 2009-06-12 06:21:16