使用自动布局约束旋转后对齐 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 子类化。
我正在尝试获取一行文本以匹配旋转时 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 子类化。