[swift] SnapKit으로 네비게이션 컨트롤 구현하기
SnapKit은 iOS 개발에서 AutoLayout을 쉽게 구현할 수 있는 라이브러리로 많이 사용됩니다. 이번 글에서는 SnapKit을 사용하여 네비게이션 컨트롤을 구현하는 방법을 알아보겠습니다.
필요한 라이브러리 추가하기
먼저, 프로젝트에 SnapKit을 추가해야 합니다. SnapKit은 CocoaPods를 통해 설치할 수 있습니다. Podfile
파일에 다음과 같이 작성하고, pod install
명령어를 실행하세요.
platform :ios, '10.0'
use_frameworks!
target 'YourProjectName' do
pod 'SnapKit'
end
네비게이션 컨트롤 생성하기
네비게이션 컨트롤은 UINavigationController
를 사용하여 생성할 수 있습니다. 이때, 네비게이션 컨트롤의 루트 뷰 컨트롤러로는 필요한 화면을 설정해주어야 합니다.
import UIKit
import SnapKit
class ViewController: UIViewController {
// 네비게이션 컨트롤러 생성
let navigationController = UINavigationController()
override func viewDidLoad() {
super.viewDidLoad()
// 루트 뷰 컨트롤러 설정
let rootViewController = YourRootViewController()
navigationController.viewControllers = [rootViewController]
// 네비게이션 컨트롤러를 현재 화면에 추가
addChild(navigationController)
view.addSubview(navigationController.view)
// 네비게이션 컨트롤러 뷰의 오토레이아웃 처리
navigationController.view.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
}
네비게이션 바 설정하기
네비게이션 컨트롤러에는 기본적으로 네비게이션 바가 함께 포함되어 있습니다. 앱에 맞춰 네비게이션 바를 커스터마이징할 수 있습니다.
class YourRootViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 네비게이션 바 타이틀 설정
navigationItem.title = "Your Title"
// 네비게이션 바 배경색 설정
navigationController?.navigationBar.barTintColor = UIColor.blue
// 네비게이션 바 텍스트 색상 설정
navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
// 네비게이션 바 버튼 추가
let rightButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addButtonTapped))
navigationItem.rightBarButtonItem = rightButtonItem
}
@objc func addButtonTapped() {
// 버튼을 눌렀을 때의 동작 구현
}
}
네비게이션 컨트롤 이동하기
SnapKit을 사용하여 네비게이션 컨트롤러 간 이동을 구현할 수 있습니다.
class YourRootViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let nextViewController = YourNextViewController()
let button = UIButton(type: .system)
button.setTitle("Next", for: .normal)
button.addTarget(self, action: #selector(nextButtonTapped), for: .touchUpInside)
view.addSubview(button)
button.snp.makeConstraints { make in
make.center.equalToSuperview()
}
@objc func nextButtonTapped() {
navigationController?.pushViewController(nextViewController, animated: true)
}
}
}
위와 같이 버튼을 생성하고, 버튼을 눌렀을 때 pushViewController
메서드를 사용하여 다음 화면으로 이동할 수 있습니다.
SnapKit을 사용하여 네비게이션 컨트롤을 손쉽게 구현할 수 있습니다. 해당 내용을 참고하여 자신의 프로젝트에 적용해보세요.
참고 자료
- SnapKit 공식 문서: https://github.com/SnapKit/SnapKit
- SnapKit 사용 예제: https://github.com/SnapKit/SnapKit/blob/master/Examples/Project-iOS/ViewController.swift