动态高度的UILabel在iOS中不适用于相同的字符串

时间:2013-04-20 09:41:05

标签: iphone ios objective-c ios6 uilabel

我在我的应用程序中使用下面的代码来获取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如果你问一个有争议的公众人物怎么办?他/她可能提出什么想法? 所以有时我能够显示整个字符串,但有时它只是剪切了一些文本。 我怎么能解决这个问题...请帮助我,让我知道如果我做错了什么。

2 个答案:

答案 0 :(得分:2)

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

label.numberOfLines = 0;

答案 1 :(得分: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;也可能有益。

Here's一个很好的解释为什么使用sizeThatFits比使用sizeWithFont要好。