Ich habe eine UIView
und ich habe die Einschränkungen mit Xcode Interface Builder festgelegt.
Jetzt muss ich diese Höhenkonstante UIView's
programmgesteuert aktualisieren .
Es gibt eine Funktion, die so aussieht myUIView.updateConstraints()
, aber ich weiß nicht, wie ich sie verwenden soll.
swift
xcode
autolayout
nslayoutconstraint
ios-autolayout
Chris Mikkelsen
quelle
quelle
Antworten:
Wählen Sie die Höhenbeschränkung im Interface Builder aus und nehmen Sie einen Auslass davon. Wenn Sie also die Höhe der Ansicht ändern möchten, können Sie den folgenden Code verwenden.
Methode
updateConstraints()
ist eine Instanzmethode vonUIView
. Dies ist hilfreich, wenn Sie die Einschränkungen programmgesteuert festlegen. Es aktualisiert die Einschränkungen für die Ansicht. Für mehr Details klicken Sie hier .quelle
Wenn Sie eine Ansicht mit mehreren Einschränkungen haben, ist dies viel einfacher, ohne mehrere Ausgänge erstellen zu müssen:
Geben Sie im Interface Builder für jede Einschränkung, die Sie ändern möchten, einen Bezeichner an:
Dann können Sie im Code mehrere Einschränkungen wie folgt ändern:
Sie können mehreren Einschränkungen denselben Bezeichner geben, sodass Sie Einschränkungen zusammenfassen und alle gleichzeitig ändern können.
quelle
Ändern
HeightConstraint
undWidthConstraint
ohne zu schaffenIBOutlet
.Hinweis: Weisen Sie in Storyboard- oder XIB-Dateien Höhen- oder Breitenbeschränkungen zu. nach dem Abrufen dieser Einschränkung mit dieser Erweiterung.
Mit dieser Erweiterung können Sie eine Höhen- und Breitenbeschränkung abrufen:
Sie können verwenden:
quelle
first(where: ...)
Sie sofort anstelle vonfilter
+first
Ziehen Sie die Einschränkung als IBOutlet in Ihre VC. Anschließend können Sie den zugehörigen Wert (und andere Eigenschaften; siehe Dokumentation) ändern:
quelle
quelle
Wenn die obige Methode nicht funktioniert, stellen Sie sicher, dass Sie sie im Block Dispatch.main.async {} aktualisieren. Sie müssen dann nicht die layoutIfNeeded () -Methode aufrufen.
quelle
Verbinden Sie zuerst die Höhenbeschränkung mit unserem Viewcontroller, um IBOutlet wie im folgenden Code zu erstellen
Setzen Sie dann den folgenden Code in die Ansicht, die geladen wurde, oder in Aktionen
Wenn es sich innerhalb einer Schaltfläche befindet, klicken Sie
quelle
Um eine Layouteinschränkung zu aktualisieren, müssen Sie nur die Konstanteneigenschaft aktualisieren und danach layoutIfNeeded aufrufen.
quelle
quelle