tl;dr Nothing but sugar.
Tiny Constraints is the syntactic sugar that makes Auto Layout sweeter for human use.
- Shortest possible syntax for creating layout constraints.
- Constraints are active by default.
- 100% compatible with Auto Layout.
- Optionally store your constraints.
- Set constraint priorities upon creation.
- Stack views together with one line of code.
Attaching a view to its superview with NSLayoutConstraint
:
NSLayoutConstraint.activate([
view.topAnchor.constraint(equalTo: superview.topAnchor, constant: 0),
view.leadingAnchor.constraint(equalTo: superview.leadingAnchor, constant: 0),
view.bottomAnchor.constraint(equalTo: superview.bottomAnchor, constant: 0),
view.trailingAnchor.constraint(equalTo: superview.trailingAnchor, constant: 0)
])
with Tiny Constraints
:
view.edges(to: superview)
or:
view.edges(to: superview, insets: UIEdgeInsets(top: 10, left: 10, bottom: 0, right: 0))
Constraining the center of a view to its superview with NSLayoutConstraint
:
NSLayoutConstraint.activate([
view.centerXAnchor.constraint(equalTo: superview.centerXAnchor, constant: 0)
view.centerYAnchor.constraint(equalTo: superview.centerYAnchor, constant: 0)
])
with Tiny Constraints
:
view.center(in: superview)
or:
view.center(in: superview, offset: CGPoint(x: 10, y: 10))
Tiny Constraints
gives you convenient and tiny typealiases for handling constraints.
- Constraint = NSLayoutConstraint
- Constraints = [NSLayoutConstraint]
This constraints the top-anchor
of the view to the top-anchor
of the superview.
view.top(to: superview)
This constraints the top-anchor
of the view to the bottom-anchor
of the superview.
view.top(to: superview, superview.bottomAnchor)
Here we create a set of inactive constraints and store these to our property.
let constraints = view.size(CGSize(width: 100, height: 100), isActive: false)
Besides the default NSLayoutConstraint
activation, Tiny Constraints
also provides a way to activate a set of constraints.
constraints.activate()
You can also do this in an animation:
oldConstraints.deActivate()
constraints.activate()
UIViewPropertyAnimator(duration: 1, dampingRatio: 0.4) {
self.layoutIfNeeded()
}.startAnimation()
Here we add a height constraint to a view, store it and animate it later.
let height = view.height(100)
height.constant = 200
UIViewPropertyAnimator(duration: 1, dampingRatio: 0.4) {
self.layoutIfNeeded()
}.startAnimation()
Stack provides a way of constraining views together in a superview.
let views = [logo, title, description]
superview.stack(views, axis: .vertical, spacing: 10)
#####Find these examples and more in the Example Project.
TinyConstraints is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "TinyConstraints"
Feel free to create a pull request, open an issue or find me on Twitter.