I’m pretty excited about the new active constraint property. To date, a lot of my work involves adding and removing constraints. Now with activateConstraints: and deactivateConstraints: you can enable and disable constraint groups all at once. I can see this being used in a variety of ways:
- Disabling constraints for dynamic animators — you don’t have to layout and then remove items
- Choosing constraint sets for various states — you can use one set for example when a view is visibly presented and another if it is hidden or create closed and open presentations.
- Bringing individual constraints on-line or off-line that have competing priorities, so you can disable rather than remove a higher-priority item until it is needed again.
I’m not sure if this is animatable so I have to test that bit, but I’m really hoping it is.
One final note: the two activator/deactivator methods are documented to be more efficient than accessing constraints one-by-one.
UPDATE: WHOA! Self-installing constraints! Finally!
UIView *v = [UIView new];
v.autoLayoutEnabled = YES;
NSLayoutConstraint *c = [NSLayoutConstraint constraintWithItem:v attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0];
c.active = YES;
2014-07-11 16:44:09.138 Hello World[18020:1138706] (
2014-07-11 16:44:09.141 Hello World[18020:1138706] (
“<NSLayoutConstraint:0x7fed2d809090 UIView:0x7fed2d9449b0.centerX == UIView:0x7fed2d93da70.centerX>”