Declarative AutoLayout DSL and utilities for iOS, tvOS, and macOS



AutoLayout extensions for iOS, macOS, and tvOS.


  • Declarative DSL for creating layout constraints
  • keyboardLayoutGuide for UIView on iOS, fully animatable
  • keyboardSafeAreaLayoutGuide for UIView on iOS, fully animatable
  • Extensions for UIScrollView adjusting contentInset based on keyboard appearance


  • iOS 11+
  • tvOS 11+
  • macOS 10.11+



Create a Cartfile that lists the framework and run carthage update. Follow the instructions to add $(SRCROOT)/Carthage/Build/iOS/LayoutAid.framework to an iOS project.

github "davidask/LayoutAid"

Swift Package Manager

This project has support for Swift Package Manager.


To use the extensions provided in this library, you must import LayoutAid.

Layout DSL

NSLayoutConstraint.activate {
        Edges(equalTo: view.layoutMarginsGuide)

    iconView.anchor {
        Width(equalTo: 50)
        AspectRatio(equalTo: 1)
        Center(equalTo: containerView)

    label.anchor {
        Top(equalToSystemSpacingBelow: iconView)
        CenterX(equalTo: containerView.readableContentGuide)
        Width(lessThanOrEqualTo: containerView.readableContentGuide, multiplier: 0.5)

Constraints are best activated in bulk, however, creating complex layouts can get verbose, even with layout anchors. This library provides two static methods on NSLayoutConstraint using function builders:

  • build, for creating constraints using a function builder
  • activate, for creating and activating constraints using a function builder

To constrain a view or layout guide use view.anchor or layoutGuide.anchor. Constrain blocks can be used inside or NSLayoutConstraint.activate.

This library aligns its semantics with Apples layout anchor API, meaning that you'll find a constraint builder for each anchor type, including convenience builders.

  • Leading
  • Trailing
  • Left
  • Right
  • Top
  • Bottom
  • CenterX
  • CenterY
  • Center
  • Edges
  • DirectionalEdges
  • Size
  • AspectRatio

Keyboard layout guides

Keyboard management in iOS can be tricky. This library provides a lazy accessor to keyboardLayoutGuide and keyboardSafeAreaLayoutGuide. Backed by a Keyboard type observing the keyboard state this allows you to easily layout your views with the keyboard in mind.

NSLayoutConstraint.activate {
        Edges(equalTo: view.keyboardLayoutGuide)

    keyboardAvoidingView.anchor {
        Leading(equalTo: view)
        Trailing(equalTo: view)
        Top(equalTo: view.safeAreaLayoutGuide)
        Bottom(lessThanOrEqualTo: view.keyboardSafeAreaLayoutGuide)

UIScrollView extensions

This library can automatically adjust contentInset of UIScrollView based on keyboard appearance using

  • UIScrollView.adjustContentInsetForKeyboard(), to immediately adjust scroll view insets to keyboard
  • UIScrollView.beginAdjustingContentInsetForKeyboard(), to start observing keyboard adjusting scroll view insets automatically
  • UIScrollView.endAdjustingContentInsetForKeyboard(), to stop observing keyboard adjusting scroll view insets automatically


Please feel welcome contributing to LayoutAid, check the LICENSE file for more info.


David Ask


  • Swift Tools 5.2.0
View More Packages from this Author


  • None
Last updated: Tue Nov 08 2022 16:03:13 GMT-0500 (GMT-05:00)