UIStackView - заставить ярлык быть плотным и сделать его максимально широким - PullRequest
0 голосов
/ 12 января 2019

У меня есть UIStackView

let sv = UIStackView()
sv.axis = .horizontal
sv.distribution = .fillProportionally
sv.spacing   = 2.0
sv.translatesAutoresizingMaskIntoConstraints = false

Теперь я добавил два элемента (UIView и UILabel). Если я запускаю приложение, я вижу что-то вроде этого:

| Content (UIView)|           Content (UILabel)|

Но я хочу вот так:

| Content (UIView)           | Content (UILabel)|

Как это сделать?

Мой код для настройки просмотра стека:

let lb = UILabel()
lb.font = UIFont.systemFont(ofSize: 14, weight: UIFont.Weight.light)
lb.lineBreakMode = .byTruncatingTail
lb.numberOfLines = 2
lb.textAlignment = .right
lb.backgroundColor = UIColor.red
lb.adjustsFontSizeToFitWidth = true


let v = UIView()


stackView.addArrangedSubview(v)
stackView.addArrangedSubview(lb)
self.contentView.addSubview(stackView)


NSLayoutConstraint.activate([
   stackView.topAnchor.constraint(equalTo: self.contentView.topAnchor, constant: 2),
   stackView.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor, constant: 10),
   stackView.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor, constant: -10),
   stackView.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor, constant: -2)
])   

1 Ответ

0 голосов
/ 12 января 2019

Просто установите приоритет сопротивления сжатию содержимого равным 1000 для горизонтальной оси представления

v.setContentCompressionResistancePriority(.required, for: .horizontal)

... тогда ваше представление должно занимать столько места, сколько ему нужно, потому что оно не будет сжато

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...