소개
iOS 앱 개발에서 내비게이션 처리는 매우 중요한 부분이다. 사용자가 앱 내에서 쉽게 이동하고 찾기를 할 수 있도록 하는 것은 좋은 사용자 경험을 제공하기 위함이기 때문이다. 이번 포스트에서는 SwiftGen이라는 도구를 활용하여 내비게이션 처리를 어떻게 좀 더 효율적으로 할 수 있는지 알아보도록 하겠다.
SwiftGen이란
SwiftGen은 Xcode 프로젝트에서 asset 파일, 로컬라이징 문자열, 색상들과 같은 리소스들을 코드로 자동 생성해주는 도구이다. 이를 통해 문자열이나 이미지의 이름이 변경되더라도 코드를 수정할 필요 없이 자동으로 업데이트된 코드를 사용할 수 있다. SwiftGen은 CocoaPods나 Swift Package Manager를 통해 사용할 수 있다.
내비게이션 처리
내비게이션은 주로 UINavigationController를 사용하여 구현된다. 기존에는 화면 전환을 위해 직접 문자열이나 이미지의 이름을 사용하였지만, SwiftGen을 사용하면 이를 컴파일 타임에 안전하게 처리할 수 있다.
1. SwiftGen 설치하기
SwiftGen을 사용하기 위해서는 먼저 CocoaPods를 설치해야 한다. 프로젝트 폴더에서 다음 명령어를 실행하여 CocoaPods를 설치한다.
$ sudo gem install cocoapods
그리고 프로젝트 폴더에 Podfile
을 생성하여 다음과 같이 SwiftGen을 추가한다.
platform :ios, '12.0'
use_frameworks!
target 'MyApp' do
# 다른 팟들...
# SwiftGen 추가
pod 'SwiftGen'
end
설정이 끝나면 터미널에서 다음 명령어를 실행하여 SwiftGen을 설치한다.
$ pod install
2. 리소스 정의하기
SwiftGen을 사용하기 위해 먼저 리소스를 정의해야 한다. 이 예시에서는 내비게이션 바에 사용할 이미지 리소스와 문자열 리소스를 정의하겠다.
이미지 리소스
Assets.xcassets
에서 이미지를 정의한다. 이미지들을 그룹으로 나누는 것이 좋다.
문자열 리소스
Localizable.strings
파일에 문자열 리소스를 정의한다. 내비게이션 바의 타이틀과 버튼의 타이틀을 예시로 들겠다.
"navigation_title" = "내비게이션 바";
"button_back" = "뒤로";
"button_next" = "다음";
3. SwiftGen 사용하기
SwiftGen을 사용하려면 먼저 Resources
폴더를 생성하고, swiftgen.yml
파일을 만들어야 한다.
Sources
- Paths: Sources/Generated
TemplateName: swift5
TemplatePath: ...
Definitions:
AssetCatalogs: [Assets.xcassets]
Strings: [Localizable.strings]
그리고 터미널에서 다음 명령어를 실행하여 SwiftGen을 실행한다.
$ swiftgen
SwiftGen은 Resources/Generated
폴더에 생성된 코드를 저장한다.
4. 내비게이션 처리하기
이제 SwiftGen이 생성한 코드를 활용하여 내비게이션을 처리할 수 있다. 다음은 내비게이션 바의 타이틀과 버튼을 설정하는 코드 예시이다.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 내비게이션 바 타이틀 설정
navigationItem.title = L10n.navigationTitle
// 내비게이션 바 버튼 설정
let backButton = UIBarButtonItem(title: L10n.buttonBack, style: .plain, target: nil, action: nil)
let nextButton = UIBarButtonItem(title: L10n.buttonNext, style: .plain, target: nil, action: nil)
navigationItem.leftBarButtonItem = backButton
navigationItem.rightBarButtonItem = nextButton
}
}
위 코드에서 L10n
은 SwiftGen이 생성한 파일로, 이를 통해 리소스의 이름을 타입 안전하게 사용할 수 있다.
결론
SwiftGen을 활용하여 내비게이션 처리를 간편하고 안전하게 할 수 있다. 리소스의 변경이나 추가가 있을 때도 코드 수정을 최소화할 수 있어 개발 효율성을 높일 수 있다. SwiftGen은 다양한 리소스들을 지원하므로 프로젝트에 적용해보는 것을 추천한다.