将文本垂直对齐到UILabel中的顶部

将文本垂直对齐到UILabel中的顶部

我有一个UILabel有两行文字的空格。有时,当文本太短时,此文本将显示在标签的垂直中心。

如何垂直对齐文本,使其始终位于UILabel?


慕仙森
浏览 770回答 3
3回答

慕标琳琳

设置新的文本:myLabel.text = @"Some Text"设置maximum number为0行(自动):myLabel.numberOfLines = 0将标签的框架设置为最大大小:myLabel.frame = CGRectMake(20,20,200,800)打电话sizeToFit以缩小帧大小,使内容只适合:[myLabel sizeToFit]标签框架现在已经足够高,足够宽,适合你的文字。左上角应保持不变。我只测试了这与左上角对齐的文本。对于其他对齐,您可能需要修改后的框架。另外,我的标签已经启用了单词包装。

慕森卡

参考扩展解决方案:for(int&nbsp;i=1;&nbsp;i<&nbsp;newLinesToPad;&nbsp;i++)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;self.text&nbsp;=&nbsp;[self.text&nbsp;stringByAppendingString:@"\n"];应改为for(int&nbsp;i=0;&nbsp;i<newLinesToPad;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;self.text&nbsp;=&nbsp;[self.text&nbsp;stringByAppendingString:@"\n&nbsp;"];在每增加的换行符中都需要额外的空间,因为iPhoneUILabels后面的回车似乎被忽略了:类似地,对齐Bottom也应该使用@" \n@%"代替"\n@%"(对于周期初始化,必须替换为“for(int i=0.”)。)。以下分机适用于我://&nbsp;--&nbsp;file:&nbsp;UILabel+VerticalAlign.h#pragma&nbsp;mark&nbsp;VerticalAlign@interface&nbsp;UILabel&nbsp;(VerticalAlign)-&nbsp;(void)alignTop; -&nbsp;(void)alignBottom;@end//&nbsp;--&nbsp;file:&nbsp;UILabel+VerticalAlign.m@implementation&nbsp;UILabel&nbsp;(VerticalAlign)-&nbsp;(void)alignTop&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;CGSize&nbsp;fontSize&nbsp;=&nbsp;[self.text&nbsp;sizeWithFont:self.font]; &nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;finalHeight&nbsp;=&nbsp;fontSize.height&nbsp;*&nbsp;self.numberOfLines; &nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;finalWidth&nbsp;=&nbsp;self.frame.size.width;&nbsp;&nbsp;&nbsp;&nbsp;//expected&nbsp;width&nbsp;of&nbsp;label &nbsp;&nbsp;&nbsp;&nbsp;CGSize&nbsp;theStringSize&nbsp;=&nbsp;[self.text&nbsp;sizeWithFont:self.font&nbsp;constrainedToSize:CGSizeMake(finalWidth,&nbsp;finalHeight)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;lineBreakMode:self.lineBreakMode]; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;newLinesToPad&nbsp;=&nbsp;(finalHeight&nbsp;&nbsp;-&nbsp;theStringSize.height)&nbsp;/&nbsp;fontSize.height; &nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;&nbsp;i<newLinesToPad;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.text&nbsp;=&nbsp;[self.text&nbsp;stringByAppendingString:@"\n&nbsp;"];}-&nbsp;(void)alignBottom&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;CGSize&nbsp;fontSize&nbsp;=&nbsp;[self.text&nbsp;sizeWithFont:self.font]; &nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;finalHeight&nbsp;=&nbsp;fontSize.height&nbsp;*&nbsp;self.numberOfLines; &nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;finalWidth&nbsp;=&nbsp;self.frame.size.width;&nbsp;&nbsp;&nbsp;&nbsp;//expected&nbsp;width&nbsp;of&nbsp;label &nbsp;&nbsp;&nbsp;&nbsp;CGSize&nbsp;theStringSize&nbsp;=&nbsp;[self.text&nbsp;sizeWithFont:self.font&nbsp;constrainedToSize:CGSizeMake(finalWidth,&nbsp;finalHeight) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lineBreakMode:self.lineBreakMode]; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;newLinesToPad&nbsp;=&nbsp;(finalHeight&nbsp;&nbsp;-&nbsp;theStringSize.height)&nbsp;/&nbsp;fontSize.height; &nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;&nbsp;i<newLinesToPad;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.text&nbsp;=&nbsp;[NSString&nbsp;stringWithFormat:@"&nbsp;\n%@",self.text];}@end然后打电话[yourLabel alignTop];或[yourLabel alignBottom];每次你的标签文字作业之后。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS