From 7f524b2a04a0cbb4624d1ddc1c29eae292b71b06 Mon Sep 17 00:00:00 2001 From: Dongjin Suh Date: Mon, 19 Dec 2016 19:02:10 +0900 Subject: [PATCH] Add mas_removeExistingConstraints method. --- Masonry/MASConstraintMaker.m | 5 +---- Masonry/NSArray+MASAdditions.h | 5 +++++ Masonry/NSArray+MASAdditions.m | 7 +++++++ Masonry/View+MASAdditions.h | 5 +++++ Masonry/View+MASAdditions.m | 8 ++++++++ Masonry/View+MASShorthandAdditions.h | 4 ++++ 6 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Masonry/MASConstraintMaker.m b/Masonry/MASConstraintMaker.m index 55f90bcf..ee4874ac 100644 --- a/Masonry/MASConstraintMaker.m +++ b/Masonry/MASConstraintMaker.m @@ -34,10 +34,7 @@ - (id)initWithView:(MAS_VIEW *)view { - (NSArray *)install { if (self.removeExisting) { - NSArray *installedConstraints = [MASViewConstraint installedConstraintsForView:self.view]; - for (MASConstraint *constraint in installedConstraints) { - [constraint uninstall]; - } + [self.view mas_removeExistingConstraints]; } NSArray *constraints = self.constraints.copy; for (MASConstraint *constraint in constraints) { diff --git a/Masonry/NSArray+MASAdditions.h b/Masonry/NSArray+MASAdditions.h index 587618d9..9eb2e1c9 100644 --- a/Masonry/NSArray+MASAdditions.h +++ b/Masonry/NSArray+MASAdditions.h @@ -49,6 +49,11 @@ typedef NS_ENUM(NSUInteger, MASAxisType) { */ - (NSArray *)mas_remakeConstraints:(void (NS_NOESCAPE ^)(MASConstraintMaker *make))block; +/** + * Removes all constraints previously installed on each view in the callee. + */ +- (void)mas_removeExistingConstraints; + /** * distribute with fixed spacing * diff --git a/Masonry/NSArray+MASAdditions.m b/Masonry/NSArray+MASAdditions.m index 831d8cda..e859ce32 100644 --- a/Masonry/NSArray+MASAdditions.m +++ b/Masonry/NSArray+MASAdditions.m @@ -38,6 +38,13 @@ - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block { return constraints; } +- (void)mas_removeExistingConstraints { + for (MAS_VIEW *view in self) { + NSAssert([view isKindOfClass:[MAS_VIEW class]], @"All objects in the array must be views"); + [view mas_removeExistingConstraints]; + } +} + - (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedSpacing:(CGFloat)fixedSpacing leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing { if (self.count < 2) { NSAssert(self.count>1,@"views to distribute need to bigger than one"); diff --git a/Masonry/View+MASAdditions.h b/Masonry/View+MASAdditions.h index 6fa42a06..ab57c560 100644 --- a/Masonry/View+MASAdditions.h +++ b/Masonry/View+MASAdditions.h @@ -98,4 +98,9 @@ */ - (NSArray *)mas_remakeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block; +/** + * Removes all constraints previously installed on the callee view. + */ +- (void)mas_removeExistingConstraints; + @end diff --git a/Masonry/View+MASAdditions.m b/Masonry/View+MASAdditions.m index 5b545ead..5bb84294 100644 --- a/Masonry/View+MASAdditions.m +++ b/Masonry/View+MASAdditions.m @@ -7,6 +7,7 @@ // #import "View+MASAdditions.h" +#import "MASViewConstraint.h" #import @implementation MAS_VIEW (MASAdditions) @@ -34,6 +35,13 @@ - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block { return [constraintMaker install]; } +- (void)mas_removeExistingConstraints { + NSArray *installedConstraints = [MASViewConstraint installedConstraintsForView:self]; + for (MASConstraint *constraint in installedConstraints) { + [constraint uninstall]; + } +} + #pragma mark - NSLayoutAttribute properties - (MASViewAttribute *)mas_left { diff --git a/Masonry/View+MASShorthandAdditions.h b/Masonry/View+MASShorthandAdditions.h index 9ca6683d..6554fa35 100644 --- a/Masonry/View+MASShorthandAdditions.h +++ b/Masonry/View+MASShorthandAdditions.h @@ -52,6 +52,7 @@ - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block; - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block; - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block; +- (void)removeExistingConstraints; @end @@ -110,6 +111,9 @@ MAS_ATTR_FORWARD(centerYWithinMargins); return [self mas_remakeConstraints:block]; } +- (void)removeExistingConstraints { + [self mas_removeExistingConstraints]; +} @end #endif