我有UILabel两行文字的空间.有时,当文本太短时,此文本显示在标签的垂直中心.
如何将文本垂直对齐以始终位于顶部UILabel?

问题:UILabel假设宽度为300像素,确定所需的尺寸(线数).字符串更长,所以我设置为lineBreakModeto UILineBreakModeWordWrap并调用sizeThatFits以尝试确定大小.但它在一行中给出了457像素的宽度,而不是两行中预期的300像素.
请参阅:
CGSize available = CGSizeMake(300, INFINITY);
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 400)] autorelease];
label.text = title;
label.lineBreakMode = UILineBreakModeWordWrap;
label.font = [UIFont fontWithName:kBoldFont size:kTitleFontSize];
label.numberOfLines = 3;
CGSize sizedtoFit = [label sizeThatFits:available];
Run Code Online (Sandbox Code Playgroud)
但我发现sizetoFit变量的宽度为457像素,高度为22像素,UI显示一条带有剪切文本的行.我预计宽度为300像素,两条线的高度为44像素.
数字线的UILabel文档说:
使用该sizeToFit方法调整接收器大小时,调整大小会考虑存储在此属性中的值.例如,如果此属性设置为3,则该sizeToFit方法会调整接收器的大小,使其足够大以显示三行文本.
我尝试了各种组合:
CGRectZero给init函数,传递300x400或300 x无穷大.init函数.[sizeToFit]并希望它计算假设当前宽度的高度,但事实并非如此.layoutIfNeeded.它们都不起作用.我做错了什么,或者这是文档和框架实现不一致的错误?谢谢.