[iOS]SnapKit

김재우·2025년 3월 28일

SnapKit이란?

SnapKit은 iOS 개발에서 Auto Layout을 더 쉽게 사용할 수 있도록 도와주는 Swift 기반 라이브러리입니다.
기존의 NSLayoutConstraint 코드보다 더 직관적이고 간결한 문법으로 자동 레이아웃을 설정할 수 있습니다.

1. SnapKit과 NSLayoutConstraint 코드 비교

1. NSLayout
NSLayoutConstraint.activate([
        boxView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
        boxView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
        boxView.widthAnchor.constraint(equalToConstant: 100),
        boxView.heightAnchor.constraint(equalToConstant: 100)
2. SnapKit
 boxView.snp.makeConstraints { make in
        make.center.equalToSuperview()
        make.width.height.equalTo(100)

이처럼 훨씬 간단한 문법으로 작성 가능

비교 항목SnapKitNSLayoutConstraint
코드 작성 방식체이닝 방식으로 간결하게 작성 가능NSLayoutConstraint 객체를 개별적으로 추가해야 함
가독성직관적이고 코드 길이가 짧음코드가 길어지고 가독성이 낮음
설정 방식snp.makeConstraints {} 내부에서 한 번에 설정NSLayoutConstraint.activate([]) 배열에 추가
업데이트 방식updateConstraints로 일부 제약 변경 가능변경할 제약을 찾고 다시 활성화해야 함
재설정 방식remakeConstraints로 기존 제약을 제거하고 새로 설정기존 제약을 isActive = false로 비활성화 후 새로 추가
코드 유지보수변경이 용이하고 유지보수하기 쉬움코드가 길어질 경우 유지보수가 어려울 수 있음
Apple 공식 지원❌(서드파티 라이브러리)✅(Apple 공식 API)
SwiftUI 호환성SwiftUI에서는 사용 불가SwiftUI에서도 NSLayoutConstraint 사용 가능

2. SnapKit 주요 메서드 정리

SnapKit에서 자주 사용하는 메서드

메서드설명
makeConstraints처음 제약 조건을 설정
updateConstraints기존 제약 조건 일부를 변경
remakeConstraints기존 제약 조건을 완전히 삭제하고 다시 설정
equalToSuperview()부모 뷰와 동일한 크기로 설정
edges.equalToSuperview()상하좌우 모든 가장자리를 부모 뷰에 맞춤
size.equalTo(CGSize(width: 100, height: 100))크기 설정
center.equalToSuperview()부모 뷰 기준으로 중앙 정렬
top.equalTo(view.snp.bottom).offset(10)특정 뷰의 아래쪽에서 10pt 떨어지게 배치

코드 업데이트 기능

SnapKit에서 기존 제약 조건 변경 (updateConstraints)

boxView.snp.updateConstraints { make in
    make.width.equalTo(200)  // 기존 width 값을 200으로 변경
}
  • 기존 width 값만 변경
  • 다른 제약 조건은 그대로 유지

기존 제약 조건을 완전히 새로 설정 (remakeConstraints)

boxView.snp.remakeConstraints { make in
    make.center.equalToSuperview()
    make.size.equalTo(CGSize(width: 200, height: 200)) // 기존보다 더 큰 크기로 변경
}
  • remakeConstraints는 기존 제약 조건을 모두 삭제 후 새로 설정
  • 레이아웃을 완전히 새롭게 적용할 때 사용

3. 결론: SnapKit을 선택해야 할까?

SnapKit은 강력한 Auto Layout 도구이며 특히 코드 기반 UI 개발에서는 매우 유용합니다. 하지만 프로젝트의 성격과 개발 환경을 고려하여 도입 여부를 결정해야 합니다.

✅ 코드로 UI를 구성해야 하고, 유지보수가 중요한 경우 → SnapKit 추천
✅ Storyboard/XIB와 병행하거나, SwiftUI를 사용할 경우 → NSLayoutConstraint 유지

결국 SnapKit은 Auto Layout을 더 쉽고 직관적으로 사용할 수 있도록 도와주는 도구이며, 적절한 상황에서 활용하면 개발 속도를 높이고 코드의 가독성을 향상시킬 수 있습니다.


참고
https://github.com/SnapKit/SnapKit

profile
iOS 스타터 6기

0개의 댓글