0

我在我的应用程序中使用以下代码来获取 UILabel 的动态高度。

CGSize maximumLabelSize = CGSizeMake(231, FLT_MAX);

    CGSize expectedLabelSize = [labelString
                            sizeWithFont:self.verbLabel.font
                            constrainedToSize:maximumLabelSize
                            lineBreakMode:self.verbLabel.lineBreakMode];

    //adjust the label the the new height.
    CGRect newFrame = self.verbLabel.frame;
    newFrame.size.height = expectedLabelSize.height;
    self.verbLabel.frame = newFrame;
    return newFrame;

我的 labelString 是 如果你问一个有争议的公众人物怎么办?他/她可能提出什么想法?所以有时我可以显示整个字符串,但有时它只是剪切了一些文本。我该如何解决这个问题......请帮助我,让我知道如果我做错了什么。

4

2 回答 2

2

将 numberOfLines 设置为 0 以允许任意数量的行。

label.numberOfLines = 0;
于 2013-04-20T09:47:02.937 回答
1

我建议您使用以下方法代替sizeWithFont:

CGSize maximumLabelSize = CGSizeMake(231, FLT_MAX);
CGSize requiredSize = [self.verbLabel sizeThatFits: maximumLabelSize];
self.verbLabel.frame = CGRectMake(x, y, requiredSize.width, requiredSize.height);

这更清洁,并且可能对您更有效!

设置self.verbLabel.numberOfLines = 0;也可能是有益的。

这是一个很好的解释,为什么 usingsizeThatFits比 using 更好sizeWithFont

于 2013-04-20T10:41:12.190 回答