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