如何从底部alignmentUILabel文本?

UILabel如何从底部alignment。 比方说,我的标签可以容纳三行文字。如果input的文字是单行,那么这行应该在标签的底部。请参考下面的图片以便更好的理解。 橙色区域是标签的整个框架。目前它有一条线,它是alignment的中心。 所以我想要的是,无论有多less行,它总是应该alignment底部。

在这里输入图像说明

请提出你的想法。

谢谢。

这里有两种方法做这个…

1.首先将numberOfLines设置为0,然后使用UILabel sizeToFit属性,让你的UILabel显示其contentSize

 yourLabel.numberOfLines = 0; [yourLabel sizeToFit]; 

查看此链接的更多信息: 垂直alignmentUILabel中的文本

2.另一个select是采取UITextField而不是UILabel并将userInteractionEnabled设置为NO如下所示…

 [yourTextField setUserInteractionEnabled:NO]; 

然后将contentVerticalAlignment属性设置为如下所示的底部….

 [yourTextField setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom]; 

UPDATE

另外,用UITextField ,我们不能实现多行。 因此,我们可以使用UITextView并将其userInteractionEnabled设置为NO 。 然后,使用下面的代码使其底部alignment。

 CGFloat topCorrect = ([label bounds].size.height - [label contentSize].height); topCorrect = (topCorrect <0.0 ? 0.0 : topCorrect); label.contentOffset = (CGPoint){.x = 0, .y = -topCorrect}; 

子类UILabel

 @interface Label : UILabel @end 

然后像这样覆盖drawTextInRect

 @implementation Label - (void)drawTextInRect:(CGRect)rect { if(alignment == top) { rect.size.height = [self sizeThatFits:rect.size].height; } if(alignment == bottom) { CGFloat height = [self sizeThatFits:rect.size].height; rect.origin.y += rect.size.height - height; rect.size.height = height; } [super drawTextInRect:rect]; } @end 

我只设置一个底层约束,在IB中的超级视图,这为我工作,而不使用代码,也为最大限制的行数。

我遇到过同样的问题。 下面是我如何将文本alignment到我的UILabel的底部:

 - (void)alignLabel:(UILabel *)l withText:(NSString *)text verticalAlignOption:(int)vertAlign{ CGSize stringSize = [text sizeWithFont:l.font constrainedToSize:l.frame.size lineBreakMode:l.lineBreakMode]; switch (vertAlign) { case 0: // align = top l.frame = CGRectMake(l.frame.origin.x, l.frame.origin.y, l.frame.size.width, stringSize.height ); break; case 1: // align = bottom l.frame = CGRectMake(l.frame.origin.x, (l.frame.origin.y + l.frame.size.height) - stringSize.height, l.frame.size.width, stringSize.height ); break; case 2: // align = middle // default break; } l.text = text; } 

你是简单的调用这个方法来alignment底部:

 [self alignLabel:self.mediaTitle withText:@"My text to align" verticalAlignOption:1]; 

另一个select:使用一个标签为你的背景颜色,我称这一个originalLabel,另一个为文本,在我的例子中称为textLabel。 然后计算textLabel的高度和Y坐标:

 [textLabel sizeToFit]; int height = textLabel.frame.size.height; int yCoord = originalLabel.frame.origin.y + originalLabel.frame.size.height - height; textLabel.frame = CGRectMake( originalLabel.frame.origin.x, yCoord, textLabel.frame.size.width, height); 

您可以UILabel并覆盖该方法:

 - (void)drawTextInRect:(CGRect)rect 

用你想要使用的矩形调用超级drawTextInRect