Merge branch 'gh-pages' of github.com:SnapKit/SnapKit into gh-pages

This commit is contained in:
Robert Payne 2022-04-13 16:06:19 +12:00
commit b0fefc5741
2 changed files with 46 additions and 49 deletions

1
CNAME
View File

@ -1 +0,0 @@
snapkit.io

82
docs.md
View File

@ -96,7 +96,7 @@ let box = UIView()
superview.addSubview(box) superview.addSubview(box)
box.snp.makeConstraints { (make) -> Void in box.snp.makeConstraints { (make) -> Void in
make.edges.equalTo(superview).inset(UIEdgeInsetsMake(20, 20, 20, 20)) make.edges.equalTo(superview).inset(UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20))
} }
``` ```
@ -104,15 +104,15 @@ Not only does this greatly shorten and increase the readability of constraints S
- Determining the best common superview to install the constraints on. - Determining the best common superview to install the constraints on.
- Keeping track of the constrainted installed so they can easily be removed later. - Keeping track of the constrainted installed so they can easily be removed later.
- Ensuring `setTranslatesAutoresizingMaskIntoConstraints(false)` is called on all appropriate views. - Ensuring `translatesAutoresizingMaskIntoConstraints = false` is called on all appropriate views.
### Not all things are created equal ### Not all things are created equal
> `.equalTo` equivalent to **NSLayoutRelation.Equal** > `.equalTo` equivalent to **NSLayoutConstraint.Relation.equal**
> `.lessThanOrEqualTo` equivalent to **NSLayoutRelation.LessThanOrEqual** > `.lessThanOrEqualTo` equivalent to **NSLayoutConstraint.Relation.lessThanOrEqual**
> `.greaterThanOrEqualTo` equivalent to **NSLayoutRelation.GreaterThanOrEqual** > `.greaterThanOrEqualTo` equivalent to **NSLayoutConstraint.Relation.greaterThanOrEqual**
These three equality constraints accept one argument which can be any of the following: These three equality constraints accept one argument which can be any of the following:
@ -124,17 +124,17 @@ make.centerX.lessThanOrEqualTo(view2.snp.left)
ViewAttribute | NSLayoutAttribute ViewAttribute | NSLayoutAttribute
------------------------- | -------------------------- ------------------------- | --------------------------
view.snp.left | NSLayoutAttribute.left view.snp.left | NSLayoutConstraint.Attribute.left
view.snp.right | NSLayoutAttribute.right view.snp.right | NSLayoutConstraint.Attribute.right
view.snp.top | NSLayoutAttribute.top view.snp.top | NSLayoutConstraint.Attribute.top
view.snp.bottom | NSLayoutAttribute.bottom view.snp.bottom | NSLayoutConstraint.Attribute.bottom
view.snp.leading | NSLayoutAttribute.leading view.snp.leading | NSLayoutConstraint.Attribute.leading
view.snp.trailing | NSLayoutAttribute.trailing view.snp.trailing | NSLayoutConstraint.Attribute.trailing
view.snp.width | NSLayoutAttribute.width view.snp.width | NSLayoutConstraint.Attribute.width
view.snp.height | NSLayoutAttribute.height view.snp.height | NSLayoutConstraint.Attribute.height
view.snp.centerX | NSLayoutAttribute.centerX view.snp.centerX | NSLayoutConstraint.Attribute.centerX
view.snp.centerY | NSLayoutAttribute.centerY view.snp.centerY | NSLayoutConstraint.Attribute.centerY
view.snp.lastBaseline | NSLayoutAttribute.lastBaseline view.snp.lastBaseline | NSLayoutConstraint.Attribute.lastBaseline
#### 2. UIView/NSView #### 2. UIView/NSView
@ -180,12 +180,18 @@ make.left.equalTo(view).offset(UIEdgeInsets(top: 10, left: 0, bottom: 10, right:
> `.priority` allows you to specify an exact priority > `.priority` allows you to specify an exact priority
Priorities are can be tacked on to the end of a constraint chain like so: Priorities can be tacked on to the end of a constraint chain like so:
```swift ```swift
make.top.equalTo(label.snp.top).priority(600) make.top.equalTo(label.snp.top).priority(600)
``` ```
You may also use priority shortcuts: `.low`, `.medium`, `.high`, `.required`.
```swift
make.top.equalTo(label.snp.top).priority(.medium)
```
### Composition, composition, composition ### Composition, composition, composition
SnapKit also gives you a few convenience methods to create multiple constraints at the same time. SnapKit also gives you a few convenience methods to create multiple constraints at the same time.
@ -251,7 +257,7 @@ view1.snp.makeConstraints { (make) -> Void in
... ...
// then later you can call // then later you can call
self.topConstraint.uninstall() self.topConstraint.deactivate()
// or if you want to update the constraint // or if you want to update the constraint
self.topConstraint.updateOffset(5) self.topConstraint.updateOffset(5)
@ -298,9 +304,10 @@ func changeButtonPosition() {
} }
``` ```
### Snap view to topLayoutGuide and bottomLayoutGuide
`topLayoutGuide.snp.bottom` is similar to `topLayoutGuide.bottomAnchor` and you can also use `bottomLayoutGuide.snp.top` to align view on top of UITabBar. ### Snap view to safeAreaLayoutGuide
`topLayoutGuide` and `bottomLayoutGuide` were deprecated in `iOS 11`. Use `safeAreaLayoutGuide`:
```swift ```swift
import SnapKit import SnapKit
@ -314,40 +321,31 @@ class MyViewController: UIVewController {
self.view.addSubview(tableView) self.view.addSubview(tableView)
tableView.snp.makeConstraints { (make) -> Void in tableView.snp.makeConstraints { (make) -> Void in
make.top.equalTo(self.topLayoutGuide.snp.bottom) make.top.equalTo(self.view.safeAreaLayoutGuide.snp.top)
make.left.equalTo(view)
make.right.equalTo(view)
make.bottom.equalTo(self.bottomLayoutGuide.snp.top)
} }
} }
} }
``` ```
### Debug with ease
> `.labeled` allows you to specify constraint labels for debug logs
### Snap view to safe layout guide Labels can be tacked on to the end of a constraint chain like so:
Just like `topLayoutGuide` and `bottomLayoutGuide` using iPhone X's new `safeAreaLayoutGuide` is easy:
```swift ```swift
import SnapKit button.snp.makeConstraints { (make) -> Void in
make.top.equalTo(otherView).labeled("buttonViewTopConstraint")
class MyViewController: UIVewController {
lazy var tableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(tableView)
tableView.snp.makeConstraints { (make) -> Void in
make.top.equalTo(self.safeAreaLayoutGuide.snp.bottom)
}
}
} }
``` ```
Resulting `Unable to simultaneously satisfy constraints.` logs will use constraint labels to clearly identify which constraints need attention:
```
"<SnapKit.LayoutConstraint:buttonViewTopConstraint@SignUpViewController.swift#311
UIView:0x7fd98491e4c0.leading == UIView:0x7fd983633880.leading>"
```
<br/> <br/>
<br/> <br/>
<br/> <br/>