SketchKit is a lightweight, powerful and pure-Swift auto layout library, you can set up your constraints with a simple and intuitive code without any stringly typing.
In short, it allows you to replace this:
newView.translatesAutoresizingMaskIntoConstraints = false
addConstraint(NSLayoutConstraint(
item: newView,
attribute: NSLayoutConstraint.Attribute.centerX,
relatedBy: NSLayoutConstraint.Relation.equal,
toItem: view,
attribute: NSLayoutConstraint.Attribute.centerX,
multiplier: 1,
constant: 0))
or
newView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
with this
// It's NOT necessary: newView.translatesAutoresizingMaskIntoConstraints = false
newView.layout.applyConstraint { view in
view.centerXAnchor(equalTo: self.view.centerXAnchor)
view.centerYAnchor(equalTo: self.view.centerYAnchor)
}
The KeyboardLayoutGuide
allows you to align your views relative to the keyboard in a native way, without observing notifications or calculating keyboard heights manually.
override func viewDidLoad() {
super.viewDidLoad()
// Pin your button to the keyboard
button.layout.applyConstraint { button in
button.bottomAnchor(equalTo: view.keyboardLayoutGuide.topAnchor)
}
}
In the example above, the button will always be anchored to the top of the keyboard, automatically adjusting when the keyboard appears or disappears.
By default, the KeyboardLayoutGuide
aligns your view with the bottom safe area when available (iOS 11.0, tvOS 11.0, macOS 11.0 and later).
On earlier versions, it falls back to the view’s bottomAnchor
.
- iOS 9.0+ / tvOS 9.0+ / macOS 10.11+
- Swift 3.2+
To integrate SketchKit into your Xcode project using CocoaPods, specify it in your Podfile
:
target '<Your Target Name>' do
pod 'SketchKit'
end
Then, run the following command:
$ pod install
To add SketchKit
as a dependency, you have to add it to the dependencies
of your Package.swift
file and refer to that dependency in your target
.
import PackageDescription
let package = Package(
name: "<Your Product Name>",
dependencies: [
.package(url: "https://github.com/dogo/SketchKit", .upToNextMajor(from: "1.0.0"))
],
targets: [
.target(
name: "<Your Target Name>",
dependencies: ["SketchKit"]),
]
)
After adding the dependency, you can fetch the library with:
$ swift package resolve
github "dogo/SketchKit"
import SketchKit
final class MyViewController: UIViewController {
let myView: UIView = {
let view = UIView(frame: .zero)
view.color = .red
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(myView)
myView.layout.applyConstraint { view in
view.topAnchor(equalTo: self.view.topAnchor)
view.leadingAnchor(equalTo: self.view.leadingAnchor)
view.bottomAnchor(equalTo: self.view.bottomAnchor)
view.trailingAnchor(equalTo: self.view.trailingAnchor)
}
}
}
The project documentation can be found (here)
- Nicholas Babo (@NickBabo) thank you for the SketchKit logo,
SketchKit is released under the MIT license. See LICENSE for details.