CocoaPods trunk is moving to be read-only. Read more on the blog, there are 14 months to go.
| TestsTested | ✓ |
| LangLanguage | Obj-CObjective C |
| License | MIT |
| ReleasedLast Release | Dec 2014 |
Maintained by Nikolaj Schumacher.
Macros for making Auto Layout more readable (and writable) without using strings.
Not using (visual format) strings means you can use variables and values directly. Works for iOS and OS X.
[view addConstraints:@[
ALIGN_LEFT(view1, view2),
ALIGN_TOP(view1, view2),
PIN_WIDTH(view1, view2, TIMES(0.5))
]];
| AutoLayoutMacros | plain Auto Layout |
|---|---|
ALIGN_TOP(view1, view2)
|
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:view2
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:0.0]
|
INSET_LEFT(view1, 50)
|
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:view1.superview
attribute:NSLayoutAttributeLeft
multiplier:1.0
constant:50.0]
|
PIN_WIDTH(view1, LE(100))
|
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationLessThanOrEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:100.0]
|
PIN_HEIGHT(view1, view2, TIMES(2.0))
|
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeHeight
multiplier:2.0
constant:0.0]
|
HSPACE(view1, view2, 50, PRIO(500))
|
NSLayoutConstraint *constraint =
[NSLayoutConstraint constraintWithItem:view2
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:view1
attribute:NSLayoutAttributeRight
multiplier:1.0
constant:0.0]
constraint.priority = 500;
|
ALIGN_LEADING(view1, view2)
ALIGN_TRAILING(view1, view2)
ALIGN_LEFT(view1, view2)
ALIGN_RIGHT(view1, view2)
ALIGN_CENTER_X(view1, view2)
ALIGN_TOP(view1, view2)
ALIGN_BOTTOM(view1, view2)
ALIGN_CENTER_Y(view1, view2)
ALIGN_BASELINE(view1, view2)
ALIGN_LEADING(view1, view2, 20)
ALIGN_LEADING(view1, GE(view2))
ALIGN_LEADING(view1, LE(view2, 10))
INSET_LEADING(view1)
INSET_TRAILING(view1)
INSET_LEFT(view1)
INSET_RIGHT(view1)
INSET_CENTER_X(view1)
INSET_TOP(view1)
INSET_BOTTOM(view1)
INSET_CENTER_Y(view1)
INSET_BASELINE(view1)
INSET_LEADING(view1, -20)
INSET_LEADING(view1, GE(50))
PIN_WIDTH(view1, view2)
PIN_HEIGHT(view1, view2)
PIN_WIDTH(view1, view2, 20)
PIN_WIDTH(view1, view2, TIMES(2))
PIN_WIDTH(view1, view2, TIMES(2), 10)
PIN_WIDTH(view1, EQ(view2, TIMES(2), 10))
PIN_WIDTH(view1, LE(view2, 50), PRIO(500))
PIN_WIDTH(view1, 100)
ALIGN_HEIGHT(view1, 100)
PIN_WIDTH(view1, GE(100))
PIN_WIDTH(view1, 100, LOW)
HSPACE(view1, view2)
VSPACE(view1, view2)
HSPACE(view1, view2, 10)
HSPACE(view1, view2, GE(10))
HSPACE(view1, view2, LE(10), HIGH)
HSPACE(view1, view2, 10, REQUIRED)
All macros use the ALM_ prefix by default, e.g. ALM_ALIGN_LEFT if you import AutoLayoutMacros.h. The shorter macros above are available in AutoLayoutMacrosShort.h.
Don't use functions that start with _ALM. These are for internal use.
If you don't use CocoaPods, copy the AutoLayoutMacros directory from the repository into your project.