This repository provides some convenience methods for creating constraints.
- Pin attributes of the view to a specified item or its superview.
view.pin(.edges)
view.pin(.leading)
view.pin(.edges(.horizontal), 16)
view.pin(edges(.top, .bottom), 10, to: safeAreaLayoutGuide)
view.pin(edges: [.top: 10, .horizontal: 5], to: safeAreaLayoutGuide)
// pin view after/before another view
rightView.pin(to: .trailing, of: leftView, options: .offset(10))
view.pin(.center, 10)
view.pin([.size: 100, .centerY: 10, .top: 20, .edges(.horizontal): 10])
- Pin any attributes between two views
view.pin(.top, to: .centerY, of: anotherView)
- Set aspect ratio of the view.
view.pin(aspectRatio: 2 / 3)
- All pin methods contain a
with options
parameter.
view.pin(.edges, 10, options: .priority(.required))
options:
.priority(300)
: set the priority of the constraint.offset(10)
: set the offset of the constraint.multiplier(2)
: set the multiplier of the constraint.relation(.greaterThanOrEqual)
,.greaterThanOrEqual
,.lessThanOrEqual
: set the relation of the constraint.inactive
,.activated(false)
: set the active state of the constraint.update
: update the constraint if it already exists.translatesAutoresizingMask
: don't changetranslatesAutoresizingMaskIntoConstraints
property.safeArea
: usesafeAreaLayoutGuide
instead ofsuperview
as default second item
- All these methods can be chained
view
.pin(.edges(.horizontal), 10)
.pin(to: .bottom, of: anotherView.pin(.height, 50), options: .offset(20))
.pin(.size, 100)
- Use
PartialRangeThrough
andPartialRangeFrom
for offset value
view.pin(.bottom, 10..., with: .safeArea)
view.pin(to: .bottom, of: anotherView, options: .offset(...10))
- All these methods return
Constraints
object, that can be used for updating constraints.
Create a Package.swift
file.
// swift-tools-version:5.7
import PackageDescription
let package = Package(
name: "SomeProject",
dependencies: [
.package(url: "https://github.com/dankinsoid/VDPin.git", from: "1.7.0")
],
targets: [
.target(name: "SomeProject", dependencies: ["VDPin"])
]
)
$ swift build
Add the following line to your Podfile:
pod 'VDPin'
and run pod update
from the podfile directory first.
dankinsoid, voidilov@gmail.com
VDPin is available under the MIT license. See the LICENSE file for more info.