2016-04-17 9 views
9

Ich erstelle UIStackView s programmatisch und fügen Sie sie zum übergeordneten UIStackView, die in Storyboard erstellt wird. Child-Stack-Ansichten sind horizontal mit 2 Labels. Ich muss die Breite der Sekunde UILabel fixieren und den ersten UILabel den Restplatz füllen lassen.Fix Breite des Elements in UIStackView

Jetzt habe ich dies:

Before

Und ich möchte dies:

After

Mein Code zur Erzeugung von Ansichten Kinder stapeln:

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

Vielen Dank für jede Hilfe!

Antwort

13

Legen Sie einfach Breitenbeschränkungen auf die Etiketten.

parameterValueLabel.widthAnchor.constraint(equalToConstant: 80).isActive = true 
Verwandte Themen