2016-08-08 23 views
1

Ich versuche, mehrere Elemente (Beschriftungen und Schaltflächen) in UIView (oder UIStackView) zu zentrieren. Ich habe versucht, Elemente zu UIStackView mit Center-Ausrichtung und Verteilung füllen und Abstand 10, aber meine Elemente wird immer von der linken Seite positioniert werden. Ich habe versucht, die Zentren zu wechseln. Immer noch kein Glück.So zentrieren Sie mehrere Elemente in UIView

Was ich versuche zu erreichen:

[------- Etikett - Taste -------] Mit 2 Elementen.

[--label - button - button--] Mit 3 Elementen.

Gibt es eine Möglichkeit, dies ohne Verwendung von Abstandshaltern zu erreichen. Theoretisch könnte ich Constrains verwenden, aber ich bin mir nicht sicher, ob es eine gute Idee ist, weil sich die Anzahl der Elemente ändert.

let simpleView = UIView() 
simpleView.addSubview(text) 
simpleView.addSubview(button) 


let leftLeading = NSLayoutConstraint(item: text, attribute: 
    .LeadingMargin, relatedBy: .Equal, toItem: simpleView, 
        attribute: .LeadingMargin, multiplier: 1.0, 
        constant: 10) 

let leftLeading2 = NSLayoutConstraint(item: button, attribute: 
    .LeadingMargin, relatedBy: .Equal, toItem: simpleView, 
        attribute: .LeadingMargin, multiplier: 1.0, 
        constant: 10) 

simpleView.addConstraint(leftLeading) 
simpleView.addConstraint(leftLeading2) 


simpleView.translatesAutoresizingMaskIntoConstraints = false 
simpleView.sizeToFit() 

newView.addSubview(simpleView) 

let horizontalConstraint = NSLayoutConstraint(item: simpleView, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: newView, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0) 
newView.addConstraint(horizontalConstraint) 

let verticalConstraint = NSLayoutConstraint(item: simpleView, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: newView, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0) 
newView.addConstraint(verticalConstraint) 

ich etwas falsch sein muss, weil das ist, was ich bekommen (NewView ist rot, Taste ist blau, fehlt Text-Label):

enter image description here

+0

Haben Sie versucht, gleichmäßig zu verteilen? – KotaBear233

Antwort

0

eine Ansicht erstellen, in der Mitte der Ansicht wo du musst. Dann können Sie innerhalb dieser Ansicht jedes Element einfügen und jedem eine programmatische NSLayoutConstraint geben, die eine .Leading von 5 oder einen beliebigen Abstand zwischen den Elementen hat.

VIEW [ELEMENT ELEMENT ELEMENT]

Die Anzahl keine Rolle wird. Sehen Sie sich NSLayoutConstraints an und stellen Sie sicher, dass Sie view.addConstraints verwenden.

+0

Bitte sehen Sie sich meine Bearbeitung an. – HelloimDarius