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