Swift中左对齐的垂直UILabel

时间:2018-11-25 21:31:35

标签: ios swift alignment uilabel snapkit

我正在UICollectionViewCell中工作,试图使旋转的UILabel以固定的宽度粘贴到标签的左侧。这是我能够实现的:

Screenshot

如您所见,标签的尺寸似乎与文本的长度有关,并且禁用自动调整大小无效。我想将标签限制为〜80,并占据单元格的整个高度,足以容纳具有一定间距的字体。 UICollectionViewCell的整个代码:

import Foundation
import UIKit

class DayOfWeekCell: UICollectionViewCell {

    let categoryLabel = UILabel()

    override init(frame: CGRect) {
        super.init(frame: frame)

        backgroundColor = .red

        categoryLabel.transform = CGAffineTransform.init(rotationAngle: -CGFloat.pi/2)
        categoryLabel.textColor = UIColor.white
        categoryLabel.font = UIFont.systemFont(ofSize: 25)
        categoryLabel.translatesAutoresizingMaskIntoConstraints = false

        addSubview(categoryLabel)

        categoryLabel.backgroundColor = .blue
        categoryLabel.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 0).isActive = true
        categoryLabel.topAnchor.constraint(equalTo: self.topAnchor, constant: 0).isActive = true
        categoryLabel.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0).isActive = true
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

ViewController sizeForItem返回高度为180的视图宽度。它不与任何单元格一起播放,仅设置标签的文本。

对于iOS来说我还是一个相对较新的人,但是过去一个小时花了很多时间来修补它,只是无法让它玩的开心! SnapKit已导入,但我也没有成功。是否有一些我不知道的自动调整?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

我猜想使用锚点施加的约束存在问题。由于还应用了所有底部锚,因此不同文本的锚点也不同。我设法通过再次应用平移位置来获得不错的对齐方式

 let transform = CGAffineTransform(rotationAngle: -.pi / 2).translatedBy(x: -25, y: -50)
categoryLabel.transform = transform

enter image description here

应用于类别标签的约束与leftAnchor,topAnchor对齐,并且宽度为100。