2017-05-27 3 views
0

Ich versuche, Elemente innerhalb eines UIStackView zu bekommen, um sich gleich von der Mitte zu positionieren.Swift UIStackView: Elemente von der Mitte aus programmatisch positionieren.

Dies ist der gewünschte Effekt Ich möchte:

enter image description here

Wie man sehen kann, würde ich die zwei Textfelder mögen gleich voneinander und ausgerichtet Zentrum innerhalb des Stapels Ansicht beabstandet sind.

Diese Stapelansicht wird entweder 1 - 7 Textfelder haben, die ich aufgereiht habe.

Hier ist das, was zur Zeit kommt aus:

enter image description here

Dies ist, wie ich die Einstellung der Textfelder

let textLabel = UILabel() 
textLabel.backgroundColor = UIColor.red 
textLabel.widthAnchor.constraint(equalToConstant: 40.0).isActive = true 
textLabel.heightAnchor.constraint(equalToConstant: 20.0).isActive = true 
textLabel.text = "Hi" 
textLabel.textAlignment = .center 

let textLabel1 = UILabel() 
textLabel1.backgroundColor = UIColor.red 
textLabel1.widthAnchor.constraint(equalToConstant: 40.0).isActive = true 
textLabel1.heightAnchor.constraint(equalToConstant: 20.0).isActive = true 
textLabel1.text = "Hi" 
textLabel1.textAlignment = .center 

Ich erzeuge den Stapel Ansicht wie so:

//Stack View 
let stackView = UIStackView() 
stackView.axis = UILayoutConstraintAxis.horizontal 
stackView.distribution = UIStackViewDistribution.equalCentering 
stackView.alignment = UIStackViewAlignment.fill 
stackView.spacing = 16.0 

stackView.addArrangedSubview(textLabel) 
stackView.addArrangedSubview(textLabel1) 
stackView.translatesAutoresizingMaskIntoConstraints = false; 

self.view.addSubview(stackView) 

//Constraints 

stackView.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 50).isActive = true 
stackView.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: -50).isActive = true 
stackView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 100).isActive = true 

Wie bekomme ich die Elemente nach innen, um das Zentrum auszurichten?

Ich dachte, es

UIStackViewDistribution.equalCentering

jedoch war, dass nur knapp sein Ziel viel zu tun.

Schätzen Sie Ihre Zeit :)

Antwort

2

Das ist seltsam. Normalerweise sollte eine horizontale UIStackView mit zentrierte Ausrichtung und gleich Zentrierung Verteilung genau das tun:

enter image description here

enter image description here

enter image description here

Aber vielleicht bin ich nicht verstehen Sie richtig, und Sie wollen eigentlich so etwas wie dies:

enter image description here

In diesem Fall müssen Sie füllen Ebenso wie die Verteilungsmethode gewählt und die Etiketten machen sich ihren Text zentrieren:

enter image description here

+0

I Interface Builder gefunden haben veraltete Werte für Stapel Ausrichtungen und Verteilungen zu zeigen, Sie könnten versuchen, Xcode neu starten und sehen, ob es anders rendert. – Norman

+0

Ich weiß nicht, was Sie meinen, noch hatte ich Probleme mit Stackviews in IB. :/ – xxtesaxx

+0

Dies war nur eine visuelle Demonstration der Stackview-Modi. – xxtesaxx

Verwandte Themen