CocoaPods trunk is moving to be read-only. Read more on the blog, there are 14 months to go.
| TestsTested | ✗ |
| LangLanguage | SwiftSwift |
| License | MIT |
| ReleasedLast Release | May 2017 |
| SwiftSwift Version | 3.0 |
| SPMSupports SPM | ✗ |
Maintained by Adrian Zubarev.
Write beautiful constraints:
import FunctionalLayout
let constraint = Constraint.where(view1.centerXAnchor == view2.centerXAnchor)
.named("CenterXConstraint")
.withPriority(of: 800)
.shouldBeArchived()
.nsLayoutConstraint
constraint.isActive = true
self.constraint = Constraint.where(view1.centerYAnchor == view2.centerYAnchor)
.named("CenterYConstraint")
.activated()
.nsLayoutConstraint
NSLayoutConstraint.activate([
Constraint.where(view1.widthAnchor == 200).named("WidthConstraint"),
Constraint.where(view1.heightAnchor == view2.heightAnchor)
.multiplied(with: 2.0)
.offset(by: -50)
.named("HeightConstraint")
.withPriority(of: 1000)
.shouldBeArchived()
.assignedTo(&self.someConstraintVariable)
])FunctionalLayout is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'FunctionalLayout'This API contains a complex function permutation graph modeled with protocols. Each letter represents a function that the coresponding protocol contains.
Red nodes represent the starting points for the four static functions:
Constraint.where(_: Layout<NSLayoutXAxisAnchor>) -> OWSN
Constraint.where(_: Layout<NSLayoutYAxisAnchor>) -> OWSN
Constraint.where(_: Layout<NSLayoutDimension>) -> OMWSN
Constraint.where(_: Layout<CGFloat>) -> WSNAn instance of Layout<...> can be constructed with three different infix operators.
func ==<T>(lhs: NSLayoutAnchor<T>, rhs: NSLayoutAnchor<T>) -> Layout<T>
func >=<T>(lhs: NSLayoutAnchor<T>, rhs: NSLayoutAnchor<T>) -> Layout<T>
func <=<T>(lhs: NSLayoutAnchor<T>, rhs: NSLayoutAnchor<T>) -> Layout<T>
func ==(lhs: NSLayoutDimension, rhs: CGFloat) -> Layout<CGFloat>
func >=(lhs: NSLayoutDimension, rhs: CGFloat) -> Layout<CGFloat>
func <=(lhs: NSLayoutDimension, rhs: CGFloat) -> Layout<CGFloat>This API guarantees value semantics [1] for all types except for ActivationInterface and NSLayoutConstraintInterface. For all guaranteed value semantics types, each chain creates a new immutable value type instance under the hood.
[1] Value semantics: realm.io/news/swift-gallagher-value-semantics
FunctionalLayout is available under the MIT license. See the LICENSE file for more info.