iosautolayoutnslayoutconstraint

What happens with constraints when a view is removed


The question I have is simple but I couldn't find any information in the documentation.

What happens with layout constraints when a view is removed from the view hierarchy (or moved to another view)?

For example, let's have container C with subviews A and B. Container C holds some constraints. Then we call [A removeFromSuperview]. What happens with the constraints for A?

What then happens if we add A to C again?


Solution

  • The constraints are removed. If you add A again, you will have to make new constraints for it, or if you save the constraints before you remove A, you can add them back. When I do something like this, I save the constraints like this for a view called view1:

    self.portraitConstraints = [NSMutableArray new];
    for (NSLayoutConstraint *con in self.view.constraints) {
        if (con.firstItem == self.view1 || con.secondItem == self.view1) {
           [self.portraitConstraints addObject:con];
        }
    }