Выравнивание по левому краю UILabel в Swift - PullRequest
0 голосов
/ 26 ноября 2018

Я работаю внутри 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 голосов
/ 26 ноября 2018

Я думаю, что есть проблема с ограничениями, применяемыми с помощью якорей.Поскольку также применяется вся нижняя привязка, точка привязки отличается для разных текстов.Мне удалось получить приличное выравнивание, применив перевод позиции снова, выполнив

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

enter image description here

Ограничения, примененные к метке категории, были выровнены по leftAnchor, topAnchorи шириной 100.

...