[UIKit] Snapkit (스냅킷) 사용해보기
2023. 2. 28. 22:21ㆍiOS/UIKit
728x90
반응형
🧸 시작
코드베이스를 도와주는 snapkit 라이브러리를 사용해서 화면을 생성해보자~
🧸 스냅킷 설치
2023.02.28 - [PROJECT/iOS] - [iOS/Swift] pod 설치방법
[iOS/Swift] pod 설치방법
2022.08.14 - [PROJECT/iOS] - [iOS/Swift] 스토리보드 없는 프로젝트 세팅 [iOS/Swift] 스토리보드 없는 프로젝트 세팅 프로젝트 생성 Main Interface 부분 삭제 Main 스토리보드 삭제 Info.plist 파일에서 스토리보드
nlestory.tistory.com
이제 준비는 끝
viewController 에서 화면을 만들어준다.
🧸 화면에 보여줄 버튼을 생성하고 뷰에 추가한다.
import UIKit
class ViewController: UIViewController {
lazy var redBtn: UIButton = {
let btn = UIButton()
return btn
}()
lazy var yellowBtn: UIButton = {
let btn = UIButton()
return btn
}()
lazy var blueBtn: UIButton = {
let btn = UIButton()
return btn
}()
lazy var greenBtn: UIButton = {
let btn = UIButton()
return btn
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
setAddSubViews()
}
func setAddSubViews() {
view.addSubview(redBtn)
view.addSubview(yellowBtn)
view.addSubview(blueBtn)
view.addSubview(greenBtn)
}
}
- lazy var redBtn: UIButton = { let btn = UIButton() return btn }() : 버튼을 추가해준다.
나중에 속성을 추가해주기 위해서 클로저로 생성한다.
lazy var로 설정한 이유는 호출이 있을 때만 초기화하기 때문. - setAddSubViews() : 뷰에 추가하는 메소드를 호출한다.
나중에 보기 편하게 하기위해서 따로 빼준다. - view.addSubview(redBtn) : 뷰에 추가한다.
여기까지 진행하면 이제 버튼이 어디있는 지 확인이 안되기 떄문에 화면을 실행해도 나오지 않는다.
제약조건을 걸어주고 크기를 설정해줘야 화면에 보여진다.
🧸 스냅킷을 이용하여 제약조건을 걸어준다.
import UIKit
import SnapKit
class ViewController: UIViewController {
lazy var redBtn: UIButton = {
let btn = UIButton()
btn.backgroundColor = .systemRed
btn.setTitle("빨간색 버튼", for: .normal)
return btn
}()
lazy var yellowBtn: UIButton = {
let btn = UIButton()
btn.backgroundColor = .systemYellow
btn.setTitle("노란색 버튼", for: .normal)
return btn
}()
lazy var blueBtn: UIButton = {
let btn = UIButton()
btn.backgroundColor = .systemBlue
btn.setTitle("파란색 버튼", for: .normal)
return btn
}()
lazy var greenBtn: UIButton = {
let btn = UIButton()
btn.backgroundColor = .systemGreen
btn.setTitle("초록색 버튼", for: .normal)
return btn
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
setAddSubViews()
makeConstraints()
}
func setAddSubViews() {
view.addSubview(redBtn)
view.addSubview(yellowBtn)
view.addSubview(blueBtn)
view.addSubview(greenBtn)
}
func makeConstraints() {
redBtn.snp.makeConstraints { make in
make.top.equalTo(view.safeAreaLayoutGuide.snp.top)
make.leading.equalToSuperview().offset(30)
make.trailing.equalToSuperview().offset(-30)
make.height.equalTo(50)
}
yellowBtn.snp.makeConstraints { make in
make.top.equalTo(redBtn.snp.bottom).offset(10)
make.leading.equalToSuperview().offset(30)
make.trailing.equalToSuperview().offset(-30)
make.height.equalTo(50)
}
blueBtn.snp.makeConstraints { make in
make.top.equalTo(yellowBtn.snp.bottom).offset(10)
make.leading.equalToSuperview().offset(30)
make.trailing.equalToSuperview().offset(-30)
make.height.equalTo(50)
}
greenBtn.snp.makeConstraints { make in
make.top.equalTo(blueBtn.snp.bottom).offset(10)
make.leading.equalToSuperview().offset(30)
make.trailing.equalToSuperview().offset(-30)
make.height.equalTo(50)
}
}
}
- 버튼 클로저에 버튼색상과 버튼제목을 설정해준다.
- makeConstraints() : 제약조건을 만들어주는 메소드
- 제약조건을 걸어줄 때는 프로퍼티.snp.makeConstraints { } 를 사용하면 된다.
- 스토리보드에서 설정하듯이 x축과 y축의 제약조건을 제대로 설정해주면 된다.
- 위, 왼쪽, 오른쪽의 제약조건을 설정한 후 높이를 주어서 bottom의 제약조건은 생략하였다.
[참고자료]
https://github.com/SnapKit/SnapKit
GitHub - SnapKit/SnapKit: A Swift Autolayout DSL for iOS & OS X
A Swift Autolayout DSL for iOS & OS X. Contribute to SnapKit/SnapKit development by creating an account on GitHub.
github.com
728x90
반응형
'iOS > UIKit' 카테고리의 다른 글
[UIKit] No StroyBoard -Navigation Controller (네비게이션 컨트롤러)와 TabBar Controller (탭바컨트롤러) 만들기 (0) | 2023.03.01 |
---|---|
[UIKit] No StroyBoard -ViewController에서 View와 Controller 분리하기 (0) | 2023.03.01 |
[UIKit] 버튼 클릭 후 사파리 URL 열기 (0) | 2022.09.16 |
[UIKit] 뷰컨트롤러(ViewController) Dismiss 후 데이터 전달 -델리게이트 패턴 (0) | 2022.09.01 |
[UIKit] 테이블뷰 셀안에 있는 버튼 클릭 이벤트 처리하기 (자세히) -델리게이트 패턴 (0) | 2022.09.01 |