Sulthan Sulthan - 1 month ago 17
iOS Question

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?

Answer

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];
    }
}
Comments