Учитывая иерархию представления:
UIStackView
--UILabel
--UISwitch
Метка разрывается слишком рано, даже если ее можно разместить на одной строке.
Настройка numberOfLines = 1
заставляет этикетку быть правильно размеченной.
Как заставить UILabel выполнять разрыв строки только при необходимости?
Код:
private lazy var title: UILabel = {
let v = UILabel()
v.numberOfLines = 0
return v
}()
private lazy var toggle = UISwitch()
private lazy var stack = UIStackView(axis: .horizontal,
distribution: .equalSpacing,
alignment: .center,
views: [title,
toggle])
func setupConstraints() {
stack.snp.makeConstraints { (make) in
make.edges.equalTo(contentView.layoutMarginsGuide)
}
}
Результат:
Настройка numberOfLines = 1
дает мне то, чего я хотел бы достичь, но метка теряет свою многострочную функциональность:
Как заставить желаемое поведение без потери поддержки многострочных меток?
При наличии большого горизонтального пространства метка правильно размещается независимо от свойства numberOfLines
: