If you you want to see the full example, run the example project, clone the repo, and run pod install
from the Example directory first.
All constraints are specified as the input parameters. Call the method of UIView
- makeConstraints(for:)
which takes one or more instances of CSMConstraintType
enumeration, separated with commas.
enum CSMConstraintType {
case top
case leading
case left
case bottom
case trailing
case right
case height
case width
case centerX
case centerY
}
All calculations are made in the closure. You can easily pin the view to any side of it's superview with pin(to:)
, method of the instance of CSMConstraintPinner
, or pinAndReturn(to:)
if you want to use the constraint later.
Constants are made by using equal(_:)
or equalAndReturn(_:)
methods.
_ anchor
: NSLayoutAnchor - anchor point.const
: CGFloat - constant offset in certain axis.mult
: CGFLoat - multiplier, uses only for height and width anchors.options
: CSMConstraintOptions - possible options:.equal
,.lessOrEqual
,.moreOrEqual
.
By default you only need to specify the anchor, all constraints are activated and underlying view has it's property translatesAutoresizingMaskIntoConstraints
set to false!
You also have an ability to return all anchors within a closure by using returnAll()
method on CSMConstraintPinner
.
And you can deactivate your constraints using deactivate(_ :)
with the index of constraint, or use deactivateAll()
.
someView.makeConstraints(for: .top, .left, .width, .height) { (make) in
self.someViewTopAnchor = make.pinAndReturn(to: self.view.topAnchor, const: 30)
make.pin(to: self.view.leftAnchor, const: 10)
make.pin(to: self.view.widthAnchor, mult: 0.3)
make.equal(200)
}
- Arrange view based on
Safe Area Layout Guide
that works for all devices and ios versions:
viewController.fillSafeArea(with: someView)
- If you want to cover the entire superview:
someView.fillSuperview()
- Anchor to center of a view:
someView.anchorCenterSuperview()
or
someView.anchorCenterXToSuperview(constant: 10)
someView.anchorCenterYToSuperview(constant: 5)
CocoaPods:
Add the line pod "Pinner"
to your Podfile
Manual:
Clone the repo and drag the file Pinner.swift
into your Xcode project.
- iOS 9.3 and above
DenisLitvin, den.litvinn@gmail.com
Pinner is available under the MIT license. See the LICENSE file for more info.