web-dev-qa-db-fra.com

Correction de la largeur de l'élément dans UIStackView

Je crée UIStackView par programmation et les ajoute au parent UIStackView, qui est créé dans Storyboard. Les vues de pile enfant sont horizontales avec 2 étiquettes. J'ai besoin de fixer la largeur du second UILabel et de faire que le premier UILabel remplisse l'espace de repos.

Maintenant, j'ai ceci:

Before

Et je veux ça:

After

Mon code pour générer des vues de pile d'enfants:

@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)
    }
}

Merci pour toute aide!

19
Peter Tretyakov

Mettez simplement des contraintes de largeur sur les étiquettes.

parameterValueLabel.widthAnchor.constraint(equalToConstant: 80).isActive = true
36
Khanh Nguyen