Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/roberthein/TinyConstraints
Nothing but sugar.
https://github.com/roberthein/TinyConstraints
animation arkit auto center constraint constraints layout libraries library nslayoutconstraint nslayoutconstraints stack sugar superview sweet swift swift-5 swift4 swift5 syntactic
Last synced: 3 days ago
JSON representation
Nothing but sugar.
- Host: GitHub
- URL: https://github.com/roberthein/TinyConstraints
- Owner: roberthein
- License: mit
- Created: 2017-02-05T17:33:40.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-04-16T15:06:27.000Z (8 months ago)
- Last Synced: 2024-12-02T21:37:43.133Z (10 days ago)
- Topics: animation, arkit, auto, center, constraint, constraints, layout, libraries, library, nslayoutconstraint, nslayoutconstraints, stack, sugar, superview, sweet, swift, swift-5, swift4, swift5, syntactic
- Language: Swift
- Homepage:
- Size: 35.7 MB
- Stars: 3,989
- Watchers: 57
- Forks: 202
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - TinyConstraints - The syntactic sugar that makes Auto Layout sweeter for human use. (Layout / Other Hardware)
- awesome-swift - TinyConstraints - TinyConstraints is the syntactic sugar that makes Auto Layout sweeter for human use. (Libs / Layout)
- awesome-swift - TinyConstraints - TinyConstraints is the syntactic sugar that makes Auto Layout sweeter for human use. (Libs / Layout)
- awesome-macos-libraries - TinyConstraints - Nothing but sugar. Language: Swift. (Layout)
- awesome-ios-star - TinyConstraints - The syntactic sugar that makes Auto Layout sweeter for human use. (Layout / Other Hardware)
- fucking-awesome-swift - TinyConstraints - TinyConstraints is the syntactic sugar that makes Auto Layout sweeter for human use. (Libs / Layout)
- awesome-swift - TinyConstraints - Nothing but sugar. ` 📝 a year ago` (Layout [🔝](#readme))
README
**TinyConstraints** is the syntactic sugar that makes Auto Layout sweeter for human use.
## Features
- [X] Pure Swift 5 sweetness.
- [X] Everything you can do with Auto Layout, but shorter.
- [X] Constraints are active by default.
- [X] 100% compatible with other Auto Layout code.
- [X] Optionally store your constraints.
- [X] Set constraint priorities upon creation.
- [X] Constrain directly to the superview.
- [X] Stack views together with one line of code.
- [X] No need to set `translatesAutoresizingMaskIntoConstraints` because `TinyConstraints` does it for you.## Examples
### Edges
Attaching a view to its superview with `NSLayoutConstraint`:```swift
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 `TinyConstraints`:
```swift
view.edgesToSuperview()
```or:
```swift
view.edgesToSuperview(insets: .top(10) + .left(10))
```
### Center
Constraining the center of a view to its superview with `NSLayoutConstraint`:```swift
NSLayoutConstraint.activate([
view.centerXAnchor.constraint(equalTo: superview.centerXAnchor, constant: 0)
view.centerYAnchor.constraint(equalTo: superview.centerYAnchor, constant: 0)
])
```with `TinyConstraints`:
```swift
view.center(in: superview)
```or:
```swift
view.center(in: superview, offset: CGPoint(x: 10, y: 10))
```## Basic Use
### Typealiases
`TinyConstraints` gives you convenient and tiny typealiases for handling constraints.
- `Constraint` = `NSLayoutConstraint`
- `Constraints` = `[NSLayoutConstraint]`### Equal and Unequal Anchors
This constraints the `top-anchor` of the view to the `top-anchor` of the superview:```swift
view.top(to: superview)
```This constraints the `top-anchor` of `firstView` to the `bottom-anchor` of `secondView`:
```swift
firstView.topToBottom(of: secondView)
```### Constrain to Superview
Often you need to constrain a view to it's superview, with TinyConstraints you can do this super easy:```swift
view.edgesToSuperview()
```Or only one edge:
```swift
view.topToSuperview()
```Or you can attach all edges except one, like this:
```swift
view.edgesToSuperview(excluding: .bottom)
```### Relation and Priority
For almost all constraints you can set the `relation` and `priority` properties. The default relation is `.equal` and the default priority is `.required`:```swift
container.width(150, relation: .equalOrLess, priority: .high)
```### Storing Constraints
Here we create a set of inactive constraints and store these to our property:```swift
let constraints = view.size(CGSize(width: 100, height: 100), isActive: false)
```### Activation and Deactivation
Besides the default `NSLayoutConstraint` activation, `TinyConstraints` also provides a way to activate *a set* of constraints:```swift
constraints.activate()
```You can also do this in an animation:
```swift
oldConstraints.deActivate()constraints.activate()
UIViewPropertyAnimator(duration: 1, dampingRatio: 0.4) {
self.layoutIfNeeded()
}.startAnimation()
```### Animating Constraint Constants
Here we add a height constraint to a view, store it and animate it later:```swift
let height = view.height(100)height.constant = 200
UIViewPropertyAnimator(duration: 1, dampingRatio: 0.4) {
self.layoutIfNeeded()
}.startAnimation()
```### Stack
Stack provides a way of constraining views together in a superview:```swift
let views = [logo, title, description]
superview.stack(views, axis: .vertical, spacing: 10)
```##### Find these examples and more in the *Example Project*.
## Installation
### CocoaPods
TinyConstraints is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:```ruby
pod "TinyConstraints"
```### Carthage
TinyConstraints is available through [Carthage](https://github.com/Carthage/Carthage). To install
it, simply add the following line to your Cartfile:```
github "roberthein/TinyConstraints"
```### Swift Package Manager
TinyConstraints is available through [Swift Package Manager](https://swift.org/package-manager/). To install
it, in Xcode 11.0 or later select `File` > `Swift Packages` > `Add Package Dependency...` and add TinyConstraints repository URL:
```
https://github.com/roberthein/TinyConstraints.git
```## Tutorials
Here are some [video tutorials](https://www.youtube.com/playlist?list=PL_csAAO9PQ8ZDbGk57RlBRnNpxBGBAEOc) made by [Alex Nagy](https://github.com/rebeloper).
## Suggestions or feedback?
Feel free to create a pull request, open an issue or find [me on Twitter](https://twitter.com/roberthein).