Search code examples
iosconstraintsnslayoutconstraint

View doesn't update after changing constraints programmatically


I want to change the relation of a constraint programmatically that is why I create a new one and replace the old one with it. I have an IBOutlet of my constraint which I want to change. As because I am using multi-os-engine my code for updating the constraint looks a little bit different to normal objectiv-c or swift.

setBasketTopConstraint(
        NSLayoutConstraint.constraintWithItemAttributeRelatedByToItemAttributeMultiplierConstant(
            basketTopConstraint().firstItem(),
            basketTopConstraint().firstAttribute(),
            NSLayoutRelation.LessThanOrEqual,
            basketTopConstraint().secondItem(),
            basketTopConstraint().secondAttribute(),
            basketTopConstraint().multiplier(),
            basketTopConstraint().constant()
    )
);

My problem is, that I can't see any effect from changing the constraint. It seems like I need to refresh my view somehow. I called view().setNeedsLayout() and view().layoutIfNeeded() but with no success.

Any advice?


Solution

  • You need to ensure that you:

    1. Install any new constraints and activate them
    2. Deactivate and/or remove any old constraints
    3. Call layoutIfNeeded()