Исправить ширину элемента в UIStackView

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

Теперь у меня есть это:

«До»

А я хочу вот это:

«После»

Мой код для создания дочерних представлений стека:

@IBOutlet weak var parentStackView: UIStackView!

func addStackViewsToParentStackView(params: [String: Float]) {
    for (name, value) in params {
        let parameterNameLabel = UILabel() // first label
        parameterNameLabel.text = name
        let parameterValueLabel = UILabel() // second label
        parameterValueLabel.text = value.description
        parameterValueLabel.frame.size.width = 80.0 // I've tried to fix width, but it does't help

        let childStackView = UIStackView(arrangedSubviews: [parameterNameLabel, parameterValueLabel])
        childStackView.axis = .Horizontal
        childStackView.distribution = .FillProportionally
        childStackView.alignment = .Fill
        childStackView.spacing = 5
        childStackView.translatesAutoresizingMaskIntoConstraints = true
        parentStackView.addArrangedSubview(childStackView)
    }
}

Спасибо за любую помощь!


person Peter Tretyakov    schedule 17.04.2016    source источник


Ответы (1)


Просто установите ограничения по ширине этикеток.

parameterValueLabel.widthAnchor.constraint(equalToConstant: 80).isActive = true
person Khanh Nguyen    schedule 17.04.2016