Programming language: Swift
License: MIT License
Tags: Layout    
Latest version: v0.1.0

SugarAnchor alternatives and similar libraries

Based on the "Layout" category.
Alternatively, view SugarAnchor alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of SugarAnchor or a related project?

Add another 'Layout' Library



CI Status Version License Platform

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.


  • Simple, concise, native[1]. Almost zero learning curve
  • Typesafe, similar to NSLayoutAnchor
  • Unit tested
  • Small codebase (less than 300 LOC)

[1] Same NSLayoutAnchor/NSLayoutConstraints, just syntactic sugar on it


To run the example project, clone the repo, and run pod install from the Example directory first.


  • [x] Xcode 8.3 or above
  • [x] Swift 3.1
  • [x] iOS 9.0 or above


SugarAnchor is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "SugarAnchor"

Operator Summary

Let's looks at a simple NSLayoutAnchor code:

(redView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20)).isActive = true

With SugarAnchor, it become:

redView.leadingAnchor =*= view.leadingAnchor + 20

Think * as Active constraint and ~ as Inactive 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 list

Operator Description Example
=*= Equal(Active) v1.leadingAnchor =*= v2.leadingAnchorv1.leftAnchor =*= v2.leftAnchor + 20v1.widthAnchor =*= v2.widthAnchor / 2 + 10v1.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, [email protected]


SugarAnchor is available under the MIT license. See the LICENSE file for more info.

*Note that all licence references and agreements mentioned in the SugarAnchor README section above are relevant to that project's source code only.