2017-05-28 2 views
0

Ich kann keine Konstanten haben, da die Bildschirmgröße die Höhe und Breite der Stackview ändern würde. Ich möchte eine allgemeine Stapelansicht mit der Höhe und Breite der Ansicht haben.Wie programmgesteuert UIStackView festlegen, um 100% der Breite und Höhe der übergeordneten Ansicht aufzunehmen?

Problem ist, wenn ich bekomme self.view.frame.height gibt mir 0, was seltsam ist, wie ich dachte, ich könnte das verwenden, um die Höhe des StackView zu setzen.

Dies funktioniert mit Konstanten in Ordnung, aber natürlich muss ich es dynamische Basis don die Höhe/Breite sein:

parentStack.widthAnchor.constraint(equalToConstant: 414).isActive = true parentStack.heightAnchor.constraint(equalToConstant: 250).isActive = true

Antwort

4

Sie tun können, dies mit Einschränkungen oder mit der automatischen Größen Maske.

Wenn Sie Einschränkungen verwenden möchten, müssen Sie den Stapel im Hinblick auf seine Superview hinzufügen, bevor die Einschränkungen zu aktivieren, wie folgt aus:

let rootView = ... 
rootView.addSubview(parentStack) 
rootView.addSubview(parentStack) 
parentStack.translatesAutoresizingMaskIntoConstraints = false 
NSLayoutConstraint.activate([ 
    rootView.leadingAnchor.constraint(equalTo: parentStack.leadingAnchor), 
    rootView.trailingAnchor.constraint(equalTo: parentStack.trailingAnchor), 
    rootView.widthAnchor.constraint(equalTo: parentStack.widthAnchor), 
    rootView.heightAnchor.constraint(equalTo: parentStack.heightAnchor)]) 

Wenn Sie die automatischen Größen Maske verwenden möchten, müssen Sie den Stapel gesetzt der Rahmen der Ansicht entspricht den Grenzen der Superview:

let rootView = ... 
rootView.addSubview(parentStack) 
parentStack.frame = rootView.bounds 
parentStack.translatesAutoresizingMaskIntoConstraints = true 
parentStack.autoresizingMask = [ .flexibleWidth, .flexibleHeight ] 
Verwandte Themen