SugarAnchor is syntactic sugar on NSLayoutAnchor to help us write more compact, readable and easy layout code. It wraps up all of NSLayoutXAxisAnchor, NSLayoutYAxisAnchor and NSLayoutDimension functionalities under some easy to use operators to reduce verbosity.
To run the example project, clone the repo, and run pod install
from the Example directory first.
- Xcode 8.3 or above
- Swift 3.1
- iOS 9.0 or above
SugarAnchor is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "SugarAnchor"
Think ~
as Inactive constraint and *
as Active constraint. Then with =*=
, you'll create an active constraint directly or with =~=
you may create an inactive constraint which you can activate later.
view1.leftAnchor =*= view2.leftAnchor + 10
// Or
let leftConstraint = (view1.leftAnchor =~= view2.leftAnchor + 10)
leftConstraint.isActive = true
In each case, you'll get the constraint to keep or just ignore. For example, for an active one:
self.heightConstraint = (v1.heightAnchor =*= 200)
// Later somewhere
self.heightConstraint.constant = 100
Operator | Description | Example |
---|---|---|
=*= |
Equal (Active) |
❖ v1.leadingAnchor =*= v2.leadingAnchor ❖ v1.leftAnchor =*= v2.leftAnchor + 20 ❖ v1.widthAnchor =*= v2.widthAnchor / 2 + 10 ❖ v1.heightAnchor =*= 200 |
<*= |
LessThanOrEqual (Active) |
❖ v1.bottomAnchor <*= container.bottomAnchor - 8 |
>*= |
GreaterThanOrEqual (Active) |
❖ v2.leadingAnchor >*= v1.trailingAnchor + 5 |
=~= |
Equal (Inactive) |
❖ (v1.widthAnchor =~= 200).isActive = true |
<~= |
LessThanOrEqual (Inactive) |
❖ (v1.bottomAnchor <~= container.bottomAnchor - 8).isActive = true |
>~= |
GreaterThanOrEqual (Inactive) |
❖ (v2.leadingAnchor >~= v1.trailingAnchor + 5).isActive = true |
ashikahmad, ashikcu@gmail.com
SugarAnchor is available under the MIT license. See the LICENSE file for more info.