NSString sizeWithFont没有返回正确的高度

时间:2012-10-24 21:35:30

标签: ios nsstring uilabel

我在滚动视图中有一个标签和一些其他项目。在-viewDidLoad中,我在标签中设置文本,我想增加标签的高度,以便所有文本都适合。因此,我计算了约束到标签现有宽度的文本大小,这是一个非常非常大的高度约束。

虽然计算的高度太小但文字正在被包裹。我在iOS4.3,iOS5.0和iOS6.0 iPad模拟器上尝试过这种方法,它在所有这些模拟器上都运行不正确。

有什么想法吗?

self.labelTextDescription.text = self.purchase.textDescription;
self.labelTextDescription.backgroundColor = [UIColor redColor];

CGSize allowedSize = self.labelTextDescription.frame.size;
allowedSize.height = 100000;

CGSize textSize = [self.labelTextDescription.text sizeWithFont:self.labelTextDescription.font constrainedToSize:allowedSize lineBreakMode:UILineBreakModeWordWrap];

1 个答案:

答案 0 :(得分:-1)

UILabel的行数默认为1.您可以自己计算,或者DavidRönnqvist指出您也可以使用0(更简单)。 但是你的代码本身并没有错。

也许这个小代码片段会指向正确的方向。

UILabel *label = [[UILabel alloc] init];
label.text = @"Lorem ipsum dolor sit amet.";

CGSize allowedSize = CGSizeMake(100, MAXFLOAT);
CGSize textSize = [label.text sizeWithFont:label.font constrainedToSize:allowedSize lineBreakMode:UILineBreakModeWordWrap];

label.frame = CGRectMake(0, 0, textSize.width, textSize.height);
label.numberOfLines = 0; //EDIT: If you want to calculate it yourself use ceilf(textSize.height / label.font.lineHeight);
[self.view addSubview:label];