如何更改 UILabel 中文本的垂直对齐方式 (iOS8)
How to change the vertical align of text in a UILabel (iOS8)
我正在制作一个应用程序,其中我需要一个非常大的 UILabel 中的文本显示在标签边界的底部。有办法吗?
通过代码或故事板即可。
使用自动布局,这很容易做到。
- 将标签放入容器中
UIView
。
- 设置约束,使其接触侧面并固定在底部。
- 根据内容保留高度变量。
正式地说,我们没有 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
。
我正在制作一个应用程序,其中我需要一个非常大的 UILabel 中的文本显示在标签边界的底部。有办法吗?
通过代码或故事板即可。
使用自动布局,这很容易做到。
- 将标签放入容器中
UIView
。 - 设置约束,使其接触侧面并固定在底部。
- 根据内容保留高度变量。
正式地说,我们没有 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
。