2016-06-13 6 views
3

Ich versuche geschachtelte Stack-Ansichten zu implementieren, in denen sich eine Stack-Ansicht in einer anderen Stack-Ansicht befindet. Ich habe meinen Code here basiert. Mein aktueller Code ist hier unten.Verschachtelte Stack-Ansichten: Untergeordnete Stack-Ansicht befindet sich nicht innerhalb der übergeordneten Stack-Ansicht, wenn sie programmgesteuert angehängt wird

@IBOutlet weak var verticalStackView: UIStackView! 
let blueImageView = UIImageView() 
blueImageView.backgroundColor = UIColor.blueColor() 
blueImageView.image = UIImage(named: "just some image") 
blueImageView.snp_makeConstraints { (make) in 
    make.height.width.equalTo(34) 
} 

let greenImageView = UIImageView() 
greenImageView.backgroundColor = UIColor.greenColor() 
greenImageView.image = UIImage(named: "just some image") 
// This is just from SnapKit 
greenImageView.snp_makeConstraints { (make) in 
    make.height.width.equalTo(34) 
} 

let stackView = UIStackView() 
stackView.axis = UILayoutConstraintAxis.Horizontal 
stackView.distribution = UIStackViewDistribution.EqualSpacing 
stackView.alignment = UIStackViewAlignment.Center 
stackView.spacing = 16.0 
stackView.addArrangedSubview(blueImageView) 
stackView.addArrangedSubview(greenImageView) 
stackView.translatesAutoresizingMaskIntoConstraints = false; 
// This is just from SnapKit 
verticalStackView.snp_makeConstraints { (make) in 
    make.height.equalTo(70) 
} 
verticalStackView.addSubview(stackView) 

Als ich versuchte, läuft es so aussieht.

Just the image

Wie Sie die übergeordnete Stapelansicht (verticalStackView) in der Hierarchie sehen können, ist die Unterstapelansicht stackView unten. Aber die Positionierung ist ausgeschaltet.

Ich bin ziemlich neu mit Swift, AutoLayout und StackViews. Wer kann mir helfen, aufzuzeigen, was mir hier fehlt?

Danke!

Antwort

1

So ist die Lösung nach einiger Lektüre herausgefunden habe ich ..

@IBOutlet weak var verticalStackView: UIStackView! 
let blueImageView = UIImageView() 
blueImageView.backgroundColor = UIColor.blueColor() 
blueImageView.image = UIImage(named: "buttonFollowCheckGreen") 
blueImageView.snp_makeConstraints { (make) in 
    make.height.width.equalTo(34) 
} 

let greenImageView = UIImageView() 
greenImageView.backgroundColor = UIColor.greenColor() 
greenImageView.image = UIImage(named: "buttonFollowCheckGreen") 
greenImageView.snp_makeConstraints { (make) in 
    make.height.width.equalTo(34) 
} 

let firstLineStackView = UIStackView() 
firstLineStackView.axis = UILayoutConstraintAxis.Horizontal 
firstLineStackView.distribution = UIStackViewDistribution.Fill 
firstLineStackView.alignment = UIStackViewAlignment.Center 
firstLineStackView.spacing = 8.0 

firstLineStackView.addArrangedSubview(blueImageView) 
firstLineStackView.addArrangedSubview(greenImageView) 
firstLineStackView.translatesAutoresizingMaskIntoConstraints = false; 

let redImageView = UIImageView() 
redImageView.backgroundColor = UIColor.redColor() 
redImageView.image = UIImage(named: "buttonFollowCheckGreen") 
redImageView.snp_makeConstraints { (make) in 
    make.height.width.equalTo(34) 
} 

verticalStackView.addArrangedSubview(firstLineStackView) 

Ich hatte gerade addArrangedSubview statt addSubview zu verwenden und Auto-Layout lassen den Rest. Nur um die Positionierung und Größe der Bildansichten zu korrigieren, habe ich auch die alignment des verticalStackView von fill zu leading geändert.

0

greenImageView.heightAnchor.constraint (equalToConstant: 34) = true .isActive greenImageView.widthAnchor.constraint (equalToConstant: 34) = true .isActive

und es wird gelöst werden

Verwandte Themen