如何更改 UILabel 中文本的垂直对齐方式 (iOS8)

How to change the vertical align of text in a UILabel (iOS8)

我正在制作一个应用程序,其中我需要一个非常大的 UILabel 中的文本显示在标签边界的底部。有办法吗?

通过代码或故事板即可。

使用自动布局,这很容易做到。

  1. 将标签放入容器中UIView
  2. 设置约束,使其接触侧面并固定在底部。
  3. 根据内容保留高度变量。

正式地说,我们没有 api 来更改 UILabel 文本的垂直对齐方式。但是,我们可以调整您的 UILabel 的框架(如 this post), or we can use some private API like this(不推荐)

中所述

如果子类化适合您,您可以子类化 UILabel 并覆盖 |drawTextInRect:|在实际绘制文本之前调整绘图区域(CGRect)的方法

- (void)drawTextInRect:(CGRect)rect{
    CGRect targetRect = [self textRectForBounds:rect limitedToNumberOfLines:self.numberOfLines];
    targetRect.origin.y = rect.size.height - targetRect.size.height;
    [super drawTextInRect:targetRect];
}

对于 Swift 3 这是一个顶部对齐

@objc(TopAlignLabel)
class TopAlignLabel: UILabel {

    override func drawText(in rect: CGRect) {
        var targetRect = textRect(forBounds: rect, limitedToNumberOfLines: numberOfLines)
        targetRect.origin.y = 0
        super.drawText(in: targetRect)
    }
}

底部对齐使用 rect.size.height - targetRect.size.height