使多行UILabel从顶部而不是中间开始文本

时间:2011-03-03 21:07:23

标签: cocoa-touch uikit uilabel

我对多线UILabel有一点问题,我的UILabel文本就像从中间奇怪地开始,当新线到达时它会上升,所以最后一行总是在中间。我希望它的行为像普通的textview一样,从顶部和线条开始,第一线保持在顶部。对不起,如果我解释得很糟糕,我可以尝试详细说明!提前谢谢!

2 个答案:

答案 0 :(得分:11)

您可以使用NSString上的sizeWithFont:constrainedToSize:lineBreakMode:方法计算出给定字体和约束宽度的文本块的高度。然后,您可以将标签的框架更新为足以包含文本。

CGSize textSize = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:label.lineBreakMode];
label.frame = CGRectMake(20.0f, 20.0f, textSize.width, textSize.height);

答案 1 :(得分:0)

由于sizeWithFont方法在iOS 7.0 +中已经过时,您可以使用名为 boundingRectWithSize 的替代方法。

例如:

NSDictionary *attrsDictionary =[NSDictionary dictionaryWithObject:YourFont forKey:NSFontAttributeName];
NSAttributedString *attrString =[[NSAttributedString alloc] initWithString:yourString attributes:attrsDictionary];

textRect = [attrString boundingRectWithSize:yourSize options:NSStringDrawingUsesLineFragmentOrigin context:nil];