SnapKit은 쉽게 Auto layout을 쉽게 만들기 위한 써드파티 라이브러리입니다.
superview에 각각 20만큼 떨어진 뷰를 추가해 보겠습니다.
오른쪽 사진의 SnapKit을 사용한 것과 왼쪽 사진의 NSLayoutConstraint
를 사용하여 레이아웃을 그린것을 비교해보면 확연히 짧아지고 코드를 이해하기 쉬워진것을 보실 수 있습니다.
위 예제와 함께 equalTo()
와 equalToSuperview()
에 대하여 알아보겠다.
equalTo()
는 비교 대상을 정해주어야 한다.
numberLabel.snp.makeConstraints {
$0.width.equalTo(80)
$0.center.equalToSuperview()
}
numberLabel
은 width
를 80
과 같다라는 의미로 볼 수 있습니다.
incrementBtn.snp.makeConstraints {
$0.size.equalTo(CGSize(width: 80, height: 30))
$0.centerY.equalToSuperview()
$0.left.equalTo(numberLabel.snp.right).offset(32)
}
incrementBtn
의 left
는 numberLabel
의 right
와 같은 위치에 있고 32
만큼의 offset(거리)
을 가집니다. offset
에 관하여는 밑에서 자세하게 설명하겠습니다.
위 예제의 numberLabel
은 centerX
와 centerY
를 Superview
와 같게 한다는것을 볼 수 있습니다.
Superview
: 특정view
의 상위view
를 말합니다.
numberLabel
은superview
로서 기본view
를 가지므로 화면의 정중앙에 위치하게 되는것입니다.
offset
은 양수로 조건을 줄 시 가로는 왼쪽으로 움직이고 세로는 아래쪽으로 움직이게 됩니다. 즉 양수로 네 방향에 constraint
를 주게된다면 위 사진처럼 view
가 위치하게 됩니다.
inset
은 constraint
관계를 가지는 다른 view
와의 거리를 말하게 됩니다.
양수로 네방향에 constraint
를 주게 된다면 사진처럼 view
가 위치하게 됩니다.
padding
과 비슷하다고 생각하셔도 좋습니다.
SnapKit에서는 여러가지 constraint
들을 한번에 설정해주는 몇가지 method
를 제공합니다.
edges
는 top
, left
, bottom
, right
를 의미합니다.
물론 각각 constraint
를 주는것도 가능합니다.
colorBox
를 width: 50
height: 50
을 준 모습입니다.
centerX
와 centerY
를 한번에 제약을 준 것과 동일합니다. 즉 정중앙에 정렬합니다.
물론 정중앙을 기준점으로 잡고 offset
을 주는것도 가능합니다.
SnapKit은 Autolayout을 쉽게 작성하게 해주는 라이브러리입니다.
"써드파티" 라이브러리이므로 SnapKit을 쓰는것은 좋지만 SnapKit만큼
기본적으로 UIKit에서 제공하는 NSLayoutConstraint에 관하여도
공부하시면 좋겠습니다.
어려운.. snapkit....GET하러 왔습니다