Immer wenn Sie einem Objekt auf dem Storyboard eine Abhängigkeit hinzufügen, wird der Rahmen dieses Objekts von der Auto-Layout-Engine beibehalten. Dies ist das primäre Konstruktionsprinzip, denke ich. In diesem Fall können Sie einfach eine Steckdose der gewünschten Einschränkung erstellen, die Sie aktualisieren und diese Einschränkung in Ihrem Code aktualisieren möchten. Zu deinem Verständnis füge ich einen Screenshot bei.
Jetzt, nach einem Zwangs Steckdose macht es so aussehen wie muss wie folgt.
@IBOutlet weak var containerViewHeight: NSLayoutConstraint!
Jetzt, um die Höhe zu aktualisieren, müssen Sie nur eine Sache tun.
containerViewHeight.constant = 0
Meiner Meinung nach, ob dieses Update nicht in viewDidLoad
oder viewWillAppear
funktioniert dann bitte innerhalb viewDidLayoutSubviews
aktualisiert werden, da, wenn viewDidLoad
dann aufgerufen iOS nicht das Layout richtig anzuwenden.
In meinem Fall, was ich tun, ist -
override func viewDidLayoutSubviews() { //This ensures all the layout has been applied properly.
super.viewDidLayoutSubviews()
containerViewHeight.constant = 0
}
Hinweis: - Um einige schöne Animationseffekt während des Layouts zu erzielen Änderungen, die Sie wie diese Einschränkung Update innerhalb eines UIView
Animationsblock wie folgt anwenden können. Aber denken Sie daran, den Effekt zu sehen schön haben Sie dies rufen, nachdem die Ansicht richtig wie nach viewDidAppear
präsentieren usw.
UIView.animateWithDuration(1.0, delay: 0.2, usingSpringWithDamping: 8.0, initialSpringVelocity: 1.0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
containerViewHeight.constant = 0
self.view.layoutIfNeeded()
}, completion: nil)
Sorry für etwaige Fehler. Update/Edit ist sehr willkommen.
Hoffe das half. Danke
Können Sie zeigen, welche anderen Einschränkungen Sie der roten Ansicht und dem TableView gegeben haben? –
Haben Sie die Höhe von redView gleich der Höhe der Ansicht? Und Sie ändern die Höhe des redView auf 0? –