Skip to content

Instantly share code, notes, and snippets.

@sam-w
Created October 15, 2014 03:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sam-w/34c721e9888256d50867 to your computer and use it in GitHub Desktop.
Save sam-w/34c721e9888256d50867 to your computer and use it in GitHub Desktop.
Copy Autolayout Constraints
+ (void)copyConstraintsFromView:(UIView *)sourceView toView:(UIView *)destinationView
{
NSPredicate *firstPredicate = [NSPredicate predicateWithFormat:@"firstItem = %@", sourceView];
NSPredicate *secondPredicate = [NSPredicate predicateWithFormat:@"secondItem = %@", sourceView];
NSArray *viewConstraints = sourceView.constraints;
for (NSLayoutConstraint *constraint in [viewConstraints filteredArrayUsingPredicate:firstPredicate]) {
NSLayoutConstraint *replacementConstraint = [self duplicateForConstraint:constraint
withFirstItem:destinationView
secondItem:constraint.secondItem];
[destinationView addConstraint:replacementConstraint];
}
for (NSLayoutConstraint *constraint in [viewConstraints filteredArrayUsingPredicate:secondPredicate]) {
NSLayoutConstraint *replacementConstraint = [self duplicateForConstraint:constraint
withFirstItem:constraint.firstItem
secondItem:destinationView];
[destinationView addConstraint:replacementConstraint];
}
NSArray *superviewConstraints = sourceView.superview.constraints;
for (NSLayoutConstraint *constraint in [superviewConstraints filteredArrayUsingPredicate:firstPredicate]) {
NSLayoutConstraint *replacementConstraint = [self duplicateForConstraint:constraint
withFirstItem:destinationView
secondItem:constraint.secondItem];
[destinationView.superview addConstraint:replacementConstraint];
}
for (NSLayoutConstraint *constraint in [superviewConstraints filteredArrayUsingPredicate:secondPredicate]) {
NSLayoutConstraint *replacementConstraint = [self duplicateForConstraint:constraint
withFirstItem:constraint.firstItem
secondItem:destinationView];
[destinationView.superview addConstraint:replacementConstraint];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment