Fix width of element in UIStackView

28,011

Just put width constraints on the labels.

parameterValueLabel.widthAnchor.constraint(equalToConstant: 80).isActive = true
Share:
28,011
Peter Tretyakov
Author by

Peter Tretyakov

Updated on July 09, 2022

Comments

  • Peter Tretyakov
    Peter Tretyakov almost 2 years

    I create UIStackViews programmatically and add them to parent UIStackView, which is created in Storyboard. Child stack views are horizontal with 2 labels. I need to fix width of second UILabel and make the first UILabel fill the rest space.

    Now I have this:

    Before

    And I want this:

    After

    My code for generating children stack views:

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

    Thanks for any help!