使用自动布局约束旋转后对齐 UILabel 文本

Posted

技术标签:

【中文标题】使用自动布局约束旋转后对齐 UILabel 文本【英文标题】:Aligning UILabel text after rotating with auto-layout constraints 【发布时间】:2019-04-11 05:14:27 【问题描述】:

我正在尝试获取一行文本以匹配旋转时的内容,即UILabel 的顶部。目前,在每个UICollectionViewCell 中,我正在设置将标签旋转 180 度。标签的文本左对齐,但如附图所示,这应该没有任何区别。

由于UICollectionViewController 使单元格出列,我无法在执行此操作之前设置文本,因此此时在构造函数中未设置标签的文本,但是,我已经预先测试将其设置为“AAA”这没有任何效果。

label.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)
NSLayoutConstraint.activate([
    label.centerXAnchor.constraint(equalTo: centerXAnchor),
    label.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -15)])

结果:

【问题讨论】:

【参考方案1】:

因此,首先要了解的是,尽管您正在旋转标签,但变换不会改变框架 - 意思是,您的底部约束仍然应用于旋转前的底部。

对此的快速解决方法是为每个标签添加宽度约束,然后将文本对齐方式设置为 .right。

我想你也可以通过使用标签右对齐的垂直 stackView 来获得相同的结果,然后旋转 stackView。

除此之外,您可能必须重写 draw 方法并将 UILabel 子类化。

【讨论】:

谢谢,效果很好!通过添加左右约束来添加宽度允许我将它们与文本对齐方式对齐。

以上是关于使用自动布局约束旋转后对齐 UILabel 文本的主要内容,如果未能解决你的问题,请参考以下文章

无法使用约束右对齐视图

UILabel尺寸更改不会使用自动布局设置动画

UILabel 自动布局适合

自动布局约束使 UILabel 对点击更敏感

如何将自动布局约束添加到 tableview headerView 内的多行 UILabel?

如何使用自动布局调整 UILabel 宽度以适合文本?