Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- class
- mvvm
- 글또
- Switch
- uikit
- IOS
- self
- singleton
- protocol
- SWIFT
- viewlifecycle
- segue
- 고차함수
- SWIFTUI
- NotificationCenter
- apns
- struct
- PushNotification
- Git
- list
- Refresh
- ScrollView
- Observer
- http
- calendar
- escaping
- error
- array
- Animation
- 화면전환
Archives
- Today
- Total
seong_hye, the developer
Swift)SnapKit에 대해 알아보기 본문
📘 SnapKit
iOS 앱 개발에서 사용하는 Auto Layout을 코드로 쉽게 작성할 수 있게 해주는
Swift 전용 DSL(도메인 특화 언어) 라이브러리
SnapKit = NsLayoutConstraint를 간결하고 읽기 쉬운 코드로 작성할 수 있도록 도와주는 Swift 라이브러리
🔹 사용 방법
- XCode > File > Add Packages Dependencies...
URL : https://github.com/SnapKit/SnapKit
- CocoaPods로 패키지 다운로드
pod 'SnapKit'
🔹 예제
import SnapKit
let box = UIView()
vew.addSubview(box)
box.snp.makeConstraints { make in
make.top.equalToSuperview().offset(20)
make.left.right.equalToSuperview().inset(16)
make.height.equalTo(100)
}
- snp: SnapKit이 추가한 프로퍼티 (뷰에 접근 가능)
- make: SnapKit의 constraint 빌더
- equalToSuperview(): self.superview를 의미
✅ 정중앙 + 크기 설정
box.snp.makeConstraints { make in
make.center.equalToSuperview()
make.width.height.equalTo(150)
}
✅ 다른 뷰 기준으로 정렬
box.snp.makeConstraints { make in
make.top.equalTo(imageView.snp.bottom).offset(8)
make.left.equalTo(imageVIew.snp.left)
}
🔹 주요 메서드
메서드 | 설명 |
equalTo(...) | 같은 위치로 정렬 |
offset(...) | 기준점에서의 거리 |
inset(...) | 좌우 또는 상하 여백 |
size.equalTo(...) | 고정 크기 설정 |
edges.equalTo(...) | 4면(anchor) 동시에 설정 |
🔹 SwiftUI 에서는?
❗️SnapKit은 SwiftUI에서는 사용하지 않음❗️
SwiftUI는 SnapKit이 없이 자체적인 선언형 레이아웃 시스템을 갖추고 있음
✅ SwiftUI에서 SnapKit이 필요 없는 이유
SnapKit은 UiKit의 Auto Layout을 간단히 하기 위한 라이브러리
SwiftUI는 UIKit보다 훨씬 간결하고 SnapKit이 제공하는 장점을 이미 내장하고 있음
🔹 사용하는 이유?
- Auto Layout 코드보다 간결하고 직관적임
- 코드 구조가 명확함
- 클로저 기반으로 오타 없이 컴파일 단계에서 체크 가능
- 업데이트 / 재설정 등 편리함
🔹 SnapKit vs NSLayoutConstraint
항목 | SnapKit | NSLayoutConstraint |
문법 | 간결, 체이닝 | 장황, 반복 |
실수 방지 | 높음 (DSL 구조) | 낮은(수동 anchor 설정) |
Swift 친화도 | 최고 | UIKit 스타일 |
유지보수 | 쉬움 | 복잡함 |
'IOS > UIKit' 카테고리의 다른 글
UIKit) UICollectionvView - layout vs flowlayout (0) | 2022.11.06 |
---|---|
UIKit) View Life Cycle (0) | 2022.10.26 |
UIKit) AppDelegate & SceneDelegate 알아보기 (0) | 2022.10.19 |
Swift) 문법 정리 - 생성자 (0) | 2022.08.02 |
Swift) 코드 스니펫(Code Snippet) (0) | 2022.07.26 |
Comments