Search code examples
iosxcodeswiftautolayoutnslayoutconstraint

Correct way to delete a NSLayoutConstraint


In my apps I'm working a lot with constraints, in most cases with animations as well. In certain circumstances I need to remove constraints and add new ones.

As I need to support iOS 7 as well, I'm not able to use the active property, which would else be the solution for me.

The way to remove constraints is to use the removeConstraint method on a UIView.

Is it possible to create a method like

constraint.remove()

so you don't have to know which view is taking care over the constraint?


Solution

  • I've ended up using the method autoRemove provided by the PureLayout library: https://github.com/smileyborg/PureLayout

    This method finds the commonSuperview using the firstItem or secondItem and removes the constraint from the correct view.

    It resulted in this one liner:

    containerTopConstraint.autoRemove()