如何从底部对齐UILabel文本?
UILabel
如何从底部对齐。 比方说,我的标签可以容纳三行文本。如果输入的文本是单行,那么这行应该在标签的底部。请参考下面的图片以便更好地理解。 橙色区域是标签的整个框架。目前它有一条线并且它是中心对齐的。 所以我想要的是,无论有多少行,它总是应该排在最后。
请提出你的想法。
谢谢。
这有两种方法可以做到这一点......
1.首先将numberOfLines
设置为0,然后使用UILabel
sizeToFit
属性,以便您的UILabel
显示其contentSize
。
yourLabel.numberOfLines = 0;
[yourLabel sizeToFit];
查看此链接的更多信息:垂直排列UILabel中的文本
2.另一种选择是采取UITextField
而不是UILabel
并将userInteractionEnabled
设置为NO
如下所示...
[yourTextField setUserInteractionEnabled:NO];
然后将contentVerticalAlignment
属性设置为如下所示的底部....
[yourTextField setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom];
UPDATE
另外,使用UITextField
,我们无法实现多行。 因此,我们可以使用UITextView
并将其userInteractionEnabled
设置为NO
。 然后,使用下面的代码使其底部对齐。
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中的超级视图设置了一个底部约束,这对我而言无需使用代码,而且对于最大约束来说也是线数。
链接地址: http://www.djcxy.com/p/28187.html