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

Aligning UILabel text after rotating with auto-layout constraints

我正在尝试获取一行文本以匹配旋转时 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)])

结果:

因此,这里首先要了解的是,虽然您正在旋转标签,但变换不会更改框架 - 这意味着,您的底部约束仍适用于旋转前的底部。

一个快速解决方法是为每个标签添加宽度限制,然后将文本对齐设置为.right。

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

任何其他,您可能必须重写 draw 方法并将 UILabel 子类化。