所以我在Xcode中有一个标签,根据按下的不同按钮加载不同的文本。加载到标签中的文本具有不同的长度。标签足够大,可以容纳所有可以加载的不同文本,但我遇到了一个问题。当有大量文本时,它会从标签顶部开始加载,但如果文本只有一行,则它会在标签中垂直居中。有什么方法可以确保加载到标签中的文本总是从第一行开始? 提前谢谢。
答案 0 :(得分:2)
如果您使用自动布局,标签的高度将自行设置。将顶部,前导和尾部边缘修复为超级视图,并设置numberOfLines = 0
。设置文本时,textLabel的高度将相应调整。
如果您将下一个子视图的顶部固定到标签的底部,则它们之间的间距将保持不变。
答案 1 :(得分:1)
UILabel
没有可以执行此操作的垂直对齐属性。您可以使用:
[yourLabel sizeToFit];
实现这一点,但它可能不是最好的解决方案,因为它会改变标签的框架。同时将您的标签设置为多行:
yourLabel.numberOfLines = 0;
您还可以计算出适合文字的CGRect
,并将其设置为UILabel
的新框架。
CGRect boundingRect = [message boundingRectWithSize:CGSizeMake(your_desired_width, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
context:nil];