为什么sizeWithFont:constrainedToSize:lineBreakMode:返回不正确的大小?

Kev*_*lar 5 iphone cocoa-touch objective-c uikit

我有两个可能的宽度,我希望在表格单元格的标签中显示一个字符串,我需要计算高度,以便正确记录表格单元格的高度.然而,无论我为约束大小做什么,我得到相同的高度,这在我想要的情况下是不正确的.我正在使用的代码:

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];
Run Code Online (Sandbox Code Playgroud)

当我检查contentSize变量时,宽度为252,高度为36,这是预期的.但是如果不是300.0fi将222.0f插入宽度变量,宽度为189但高度仍然是36,并且只有前4个LongText字显示在2行(第3行似乎被切断了计算).有谁知道为什么会这样?

mah*_*udz 3

你的代码看起来是正确的。查看此处此处,看看您的代码中是否有任何问题。

  • 正确的; 我只是想知道是否有其他人知道实际计算大小的苹果代码不正确以及是否有替代方案。 (2认同)