2009-09-10 34 views
5

我有一个字符串,我想在一个表格单元格的标签,以显示两个可能的宽度,我需要计算使表格单元格的高度正确记录的高度。然而,不管我为约束尺寸做什么,我都会得到相同的高度,这在我想要的情况下是不正确的。我正在使用的代码:为什么sizeWithFont:constrainedToSize:lineBreakMode:返回大小不正确?

CGFloat width = 300.0f; 
NSString * value = @"LongText LongText LongText LongText LongText LongText"; 
CGSize contentSize = [value sizeWithFont: [UIFont systemFontOfSize: 14.0f] 
         constrainedToSize: CGSizeMake(width, CGFLOAT_MAX) 
          lineBreakMode: UILineBreakModeWordWrap]; 

当我检查contentSize变量时,宽度为252,高度为36,这是预期的。但是,如果不是300.0fi将222.0f插入到宽度变量中,则宽度为189,但高度仍然为36,并且只有前4个LongText字样显示在2行上(第三行似乎在某些情况下被切断计算)。有谁知道为什么会发生这种情况?

+0

如果您使用的是UITextView,请在这里查看我的答案:http://stackoverflow.com/questions/2330939/sizewithfont-doesnt-give-correct-height-for-uitextview-if-there-is -a-long-strin/15408198#15408198 – domsom

回答

3

您的代码看起来正确。查看herehere,看看代码中是否有任何不妥之处。

+0

谢谢,但这些并不能真正解释为什么该方法对于更薄的宽度无法正确运行。 – Kevlar

+0

不,你的代码应该工作。我想也许你会看到他们的代码和你的代码有所不同......我没有。 – mahboudz

+2

对;我只是想知道是否有其他人知道,实际上计算大小的苹果代码是不正确的,如果有其他选择。 – Kevlar

3

事实证明,它返回正确的大小;我正在使用的代码是使用不正确的宽度,而不是从这个方法的宽度,这就是为什么文本被切断,我很困惑。

相关问题