translatesautoresizingmaskintoconstraints swift xcode autolayout nslayoutconstraint ios-autolayout

translatesautoresizingmaskintoconstraints - swift constraints programmatically



¿Cómo actualizar la restricción de altura constante de una UIView mediante programación? (9)

Puede actualizar su restricción con una animación suave si lo desea, vea el fragmento de código a continuación:

heightOrWidthConstraint.constant = 100 UIView.animate(withDuration: animateTime, animations:{ self.view.layoutIfNeeded() })

Tengo una UIView y configuré las restricciones usando Xcode Interface Builder.

Ahora necesito actualizar UIView''s altura de esa UIView''s constante mediante programación.

Hay una función que va como myUIView.updateConstraints() , pero no sé cómo usarla.


Arrastre la restricción a su VC como IBOutlet. Luego puede cambiar su valor asociado (y otras propiedades; consulte la documentación):

@IBOutlet myConstraint : NSLayoutConstraint! @IBOutlet myView : UIView! func updateConstraints() { // You should handle UI updates on the main queue, whenever possible DispatchQueue.main.async { myConstraint.constant = 10 myView.layoutIfNeeded() } }


Para actualizar una restricción de diseño, solo necesita actualizar la propiedad constante y llamar a layoutIfNeeded después.

myConstraint.constant = newValue myView.layoutIfNeeded()


Primero conecte la restricción de Altura a nuestro controlador de vista para crear IBOutlet como se muestra en el siguiente código

@IBOutlet weak var select_dateHeight: NSLayoutConstraint!

luego poner a la vista el código a continuación se cargó o dentro de cualquier acción

self.select_dateHeight.constant = 0 // we can change the height value

si está dentro de un botón, haga clic

@IBAction func Feedback_button(_ sender: Any) { self.select_dateHeight.constant = 0 }


Seleccione la restricción de altura del generador de Interfaz y tome una salida. Por lo tanto, cuando desee cambiar la altura de la vista, puede usar el siguiente código.

yourHeightConstraintOutlet.constant = someValue yourView.layoutIfNeeded()

El método updateConstraints() es un método de instancia de UIView . Es útil cuando configura las restricciones mediante programación. Actualiza las restricciones para la vista. Para más detalles haga clic here .


Si el método anterior no funciona, asegúrese de actualizarlo en el bloque Dispatch.main.async {}. No necesita llamar al método layoutIfNeeded () entonces.


Si tiene una vista con múltiples restricciones, una forma mucho más fácil sin tener que crear múltiples salidas sería:

En el creador de interfaces, asigne a cada restricción que desee modificar un identificador:

Luego, en el código, puede modificar múltiples restricciones de la siguiente manera:

for constraint in self.view.constraints { if constraint.identifier == "myConstraint" { constraint.constant = 50 } } myView.layoutIfNeeded()

Puede asignar a varias restricciones el mismo identificador, lo que le permite agrupar restricciones y modificarlas todas a la vez.


Cambie HeightConstraint y WidthConstraint sin crear IBOutlet .

Nota: Asigne restricciones de altura o ancho en Storyboard o archivo XIB. después de buscar esta restricción utilizando esta extensión.

Puede usar esta extensión para obtener una restricción de altura y ancho

extension UIView { var heightConstaint: NSLayoutConstraint? { get { return constraints.first(where: { $0.firstAttribute == .height && $0.relation == .equal }) } set { setNeedsLayout() } } var widthConstaint: NSLayoutConstraint? { get { return constraints.first(where: { $0.firstAttribute == .width && $0.relation == .equal }) } set { setNeedsLayout() } } }

Puedes usar

yourView.heightConstaint?.constant = newValue


Create an IBOutlet of NSLayoutConstraint of yourView and update the constant value accordingly the condition specifies. //Connect them from Interface @IBOutlet viewHeight: NSLayoutConstraint! @IBOutlet view: UIView! private func updateViewHeight(height:Int){ guard let aView = view, aViewHeight = viewHeight else{ return } aViewHeight.constant = height aView.layoutIfNeeded() }