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

时间:2009-09-10 19:02:46

标签: iphone objective-c cocoa-touch 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];

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

2 个答案:

答案 0 :(得分:3)

您的代码看起来正确。查看herehere,看看代码中是否有任何错误。

答案 1 :(得分:3)

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