如何从底部对齐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

上一篇: How to align UILabel text from bottom?

下一篇: iOS 7 UITextView vertical alignment