Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ios
/
Masonry
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
Nikolay Tymchenko
11 years ago
Commit
a868d0a6bbb812f1e7625185d72ab4fa28db64ce
1 parent
344ae69e
Added mas_remakeConstraints
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
103 additions
and
1 deletions
Masonry/MASConstraintMaker.h
Masonry/MASConstraintMaker.m
Masonry/MASViewConstraint.h
Masonry/MASViewConstraint.m
Masonry/NSArray+MASAdditions.h
Masonry/NSArray+MASAdditions.m
Masonry/NSArray+MASShorthandAdditions.h
Masonry/View+MASAdditions.h
Masonry/View+MASAdditions.m
Masonry/View+MASShorthandAdditions.h
Masonry/MASConstraintMaker.h
View file @
a868d0a
...
...
@@ -80,6 +80,11 @@ typedef NS_OPTIONS(NSInteger, MASAttribute) {
@property
(
nonatomic
,
assign
)
BOOL
updateExisting
;
/**
* Whether or not to remove existing constraints prior to installing
*/
@property
(
nonatomic
,
assign
)
BOOL
removeExisting
;
/**
* initialises the maker with a default view
*
* @param view any MASConstrait are created with this view as the first item
...
...
Masonry/MASConstraintMaker.m
View file @
a868d0a
...
...
@@ -32,6 +32,12 @@
}
-
(
NSArray
*
)
install
{
if
(
self
.
removeExisting
)
{
NSArray
*
installedConstraints
=
[
MASViewConstraint
installedConstraintsForView
:
self
.
view
];
for
(
MASConstraint
*
constraint
in
installedConstraints
)
{
[
constraint
uninstall
];
}
}
NSArray
*
constraints
=
self
.
constraints
.
copy
;
for
(
MASConstraint
*
constraint
in
constraints
)
{
constraint
.
updateExisting
=
self
.
updateExisting
;
...
...
Masonry/MASViewConstraint.h
View file @
a868d0a
...
...
@@ -9,6 +9,7 @@
#import "MASViewAttribute.h"
#import "MASConstraint.h"
#import "MASLayoutConstraint.h"
#import "MASUtilities.h"
/**
* A single constraint.
...
...
@@ -35,4 +36,13 @@
*/
-
(
id
)
initWithFirstViewAttribute
:(
MASViewAttribute
*
)
firstViewAttribute
;
/**
* Returns all MASViewConstraints installed with this view as a first item.
*
* @param view A view to retrieve constraints for.
*
* @return An array of MASViewConstraints.
*/
+
(
NSArray
*
)
installedConstraintsForView
:(
MAS_VIEW
*
)
view
;
@end
...
...
Masonry/MASViewConstraint.m
View file @
a868d0a
...
...
@@ -10,6 +10,29 @@
#import "MASCompositeConstraint.h"
#import "MASLayoutConstraint.h"
#import "View+MASAdditions.h"
#import <objc/runtime.h>
@interface
MAS_VIEW
(
MASConstraints
)
@
property
(
nonatomic
,
readonly
)
NSMutableSet
*
mas_installedConstraints
;
@end
@implementation
MAS_VIEW
(
MASConstraints
)
static
char
kInstalledConstraintsKey
;
-
(
NSMutableSet
*
)
mas_installedConstraints
{
NSMutableSet
*
constraints
=
objc_getAssociatedObject
(
self
,
&
kInstalledConstraintsKey
);
if
(
!
constraints
)
{
constraints
=
[
NSMutableSet
set
];
objc_setAssociatedObject
(
self
,
&
kInstalledConstraintsKey
,
constraints
,
OBJC_ASSOCIATION_RETAIN_NONATOMIC
);
}
return
constraints
;
}
@end
@interface
MASViewConstraint
()
...
...
@@ -51,7 +74,13 @@
return
constraint
;
}
#pragma mark - private
#pragma mark - Public
+
(
NSArray
*
)
installedConstraintsForView
:(
MAS_VIEW
*
)
view
{
return
[
view
.
mas_installedConstraints
allObjects
];
}
#pragma mark - Private
-
(
void
)
setLayoutConstant
:(
CGFloat
)
layoutConstant
{
_layoutConstant
=
layoutConstant
;
...
...
@@ -344,6 +373,8 @@
[
self
.
installedView
addConstraint
:
layoutConstraint
];
self
.
layoutConstraint
=
layoutConstraint
;
}
[
firstLayoutItem
.
mas_installedConstraints
addObject
:
self
];
}
-
(
MASLayoutConstraint
*
)
layoutConstraintSimiliarTo
:
(
MASLayoutConstraint
*
)
layoutConstraint
{
...
...
@@ -369,6 +400,7 @@
[
self
.
installedView
removeConstraint
:
self
.
layoutConstraint
];
self
.
layoutConstraint
=
nil
;
self
.
installedView
=
nil
;
[
self
.
firstViewAttribute
.
view
.
mas_installedConstraints
removeObject
:
self
];
}
@end
...
...
Masonry/NSArray+MASAdditions.h
View file @
a868d0a
...
...
@@ -33,4 +33,15 @@
*/
-
(
NSArray
*
)
mas_updateConstraints
:(
void
(
^
)(
MASConstraintMaker
*
make
))
block
;
/**
* Creates a MASConstraintMaker with each view in the callee.
* Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view.
* All constraints previously installed for the views will be removed.
*
* @param block scope within which you can build up the constraints which you wish to apply to each view.
*
* @return Array of created/updated MASConstraints
*/
-
(
NSArray
*
)
mas_remakeConstraints
:(
void
(
^
)(
MASConstraintMaker
*
make
))
block
;
@end
...
...
Masonry/NSArray+MASAdditions.m
View file @
a868d0a
...
...
@@ -29,4 +29,13 @@
return
constraints
;
}
-
(
NSArray
*
)
mas_remakeConstraints
:
(
void
(
^
)(
MASConstraintMaker
*
make
))
block
{
NSMutableArray
*
constraints
=
[
NSMutableArray
array
];
for
(
MAS_VIEW
*
view
in
self
)
{
NSAssert
([
view
isKindOfClass
:[
MAS_VIEW
class
]],
@"All objects in the array must be views"
);
[
constraints
addObjectsFromArray
:[
view
mas_remakeConstraints
:
block
]];
}
return
constraints
;
}
@end
...
...
Masonry/NSArray+MASShorthandAdditions.h
View file @
a868d0a
...
...
@@ -18,6 +18,7 @@
-
(
NSArray
*
)
makeConstraints
:
(
void
(
^
)(
MASConstraintMaker
*
make
))
block
;
-
(
NSArray
*
)
updateConstraints
:(
void
(
^
)(
MASConstraintMaker
*
make
))
block
;
-
(
NSArray
*
)
remakeConstraints
:(
void
(
^
)(
MASConstraintMaker
*
make
))
block
;
@end
...
...
@@ -31,6 +32,10 @@
return
[
self
mas_updateConstraints
:
block
];
}
-
(
NSArray
*
)
remakeConstraints
:
(
void
(
^
)(
MASConstraintMaker
*
))
block
{
return
[
self
mas_remakeConstraints
:
block
];
}
@end
#endif
...
...
Masonry/View+MASAdditions.h
View file @
a868d0a
...
...
@@ -67,4 +67,15 @@
*/
-
(
NSArray
*
)
mas_updateConstraints
:(
void
(
^
)(
MASConstraintMaker
*
make
))
block
;
/**
* Creates a MASConstraintMaker with the callee view.
* Any constraints defined are added to the view or the appropriate superview once the block has finished executing.
* All constraints previously installed for the view will be removed.
*
* @param block scope within which you can build up the constraints which you wish to apply to the view.
*
* @return Array of created/updated MASConstraints
*/
-
(
NSArray
*
)
mas_remakeConstraints
:(
void
(
^
)(
MASConstraintMaker
*
make
))
block
;
@end
...
...
Masonry/View+MASAdditions.m
View file @
a868d0a
...
...
@@ -26,6 +26,14 @@
return
[
constraintMaker
install
];
}
-
(
NSArray
*
)
mas_remakeConstraints
:
(
void
(
^
)(
MASConstraintMaker
*
make
))
block
{
self
.
translatesAutoresizingMaskIntoConstraints
=
NO
;
MASConstraintMaker
*
constraintMaker
=
[[
MASConstraintMaker
alloc
]
initWithView
:
self
];
constraintMaker
.
removeExisting
=
YES
;
block
(
constraintMaker
);
return
[
constraintMaker
install
];
}
#pragma mark - NSLayoutAttribute properties
-
(
MASViewAttribute
*
)
mas_left
{
...
...
Masonry/View+MASShorthandAdditions.h
View file @
a868d0a
...
...
@@ -31,6 +31,7 @@
-
(
NSArray
*
)
makeConstraints
:(
void
(
^
)(
MASConstraintMaker
*
make
))
block
;
-
(
NSArray
*
)
updateConstraints
:(
void
(
^
)(
MASConstraintMaker
*
make
))
block
;
-
(
NSArray
*
)
remakeConstraints
:(
void
(
^
)(
MASConstraintMaker
*
make
))
block
;
@end
...
...
@@ -62,6 +63,10 @@ MAS_ATTR_FORWARD(attribute);
return
[
self
mas_updateConstraints
:
block
];
}
-
(
NSArray
*
)
remakeConstraints
:
(
void
(
^
)(
MASConstraintMaker
*
))
block
{
return
[
self
mas_remakeConstraints
:
block
];
}
@end
#endif
...
...
Please
register
or
login
to post a comment