
LayoutAid
AutoLayout extensions for iOS, macOS, and tvOS.
Features
Requirements
- iOS 11+
- tvOS 11+
- macOS 10.11+
Installation
Carthage
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.
Usage
To use the extensions provided in this library, you must import LayoutAid
.
Layout DSL
NSLayoutConstraint.activate {
containerView.anchor(
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 NSLayoutConstraint.build
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 {
keyboardBackgroundView.anchor(
Edges(equalTo: view.keyboardLayoutGuide)
)
keyboardAvoidingView.anchor {
Leading(equalTo: view)
Trailing(equalTo: view)
Top(equalTo: view.safeAreaLayoutGuide)
Bottom(lessThanOrEqualTo: view.keyboardSafeAreaLayoutGuide)
}
}
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
Contribute
Please feel welcome contributing to LayoutAid, check the LICENSE
file for more info.
Credits
David Ask
LayoutAid
AutoLayout extensions for iOS, macOS, and tvOS.
Features
keyboardLayoutGuide
forUIView
on iOS, fully animatablekeyboardSafeAreaLayoutGuide
forUIView
on iOS, fully animatableUIScrollView
adjustingcontentInset
based on keyboard appearanceRequirements
Installation
Carthage
Create a
Cartfile
that lists the framework and runcarthage update
. Follow the instructions to add$(SRCROOT)/Carthage/Build/iOS/LayoutAid.framework
to an iOS project.Swift Package Manager
This project has support for Swift Package Manager.
Usage
To use the extensions provided in this library, you must
import LayoutAid
.Layout DSL
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 builderactivate
, for creating and activating constraints using a function builderTo constrain a view or layout guide use
view.anchor
orlayoutGuide.anchor
. Constrain blocks can be used insideNSLayoutConstraint.build
orNSLayoutConstraint.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
andkeyboardSafeAreaLayoutGuide
. Backed by aKeyboard
type observing the keyboard state this allows you to easily layout your views with the keyboard in mind.UIScrollView extensions
This library can automatically adjust
contentInset
ofUIScrollView
based on keyboard appearance usingUIScrollView.adjustContentInsetForKeyboard()
, to immediately adjust scroll view insets to keyboardUIScrollView.beginAdjustingContentInsetForKeyboard()
, to start observing keyboard adjusting scroll view insets automaticallyUIScrollView.endAdjustingContentInsetForKeyboard()
, to stop observing keyboard adjusting scroll view insets automaticallyContribute
Please feel welcome contributing to LayoutAid, check the
LICENSE
file for more info.Credits
David Ask