반응형
디자인 모듈을 만들었는데,
프로젝트마다 primary color 가 바뀌도록 초기 설정을 해주어야 한다.
일단 요러케 프로젝트 타입을 정의해두고
public enum AppType {
case main
case sub
}
SPM 모듈 내에서 각 프로젝트마다 다르게 초기화되는 값을 설정하는 방법
1. Dependency Injection 사용하여 설정값 직접 주입받기
다음과 같이 SPM 모듈 내에 초기화 구조체 정의
public struct DesignConfiguration {
public static var shared = DesignConfiguration()
public let appType: AppType
public init(appType: AppType = .main) {
self.appType = AppType .main
}
}
그런 다음 모듈을 사용할 프로젝트에서 직접 초기화를 해줘야 한다. UIKit 프로젝트에서는 AppDelegate 내에서 초기화 해주면 됨.
@main
struct DesignSystemTestApp: App {
init() {
initialSetup()
}
private func initialSetup() {
DesignConfiguration.shared = DesignConfiguration(appType: .sub)
}
}
2. 환경 변수 사용하여 설정
SPM 내에서 다음과 같이 설정해주고, 사용할 프로젝트에는 환경변수만 넣어주면 된다.
let myApp: AppType = AppType(rawValue: Config.myApp) ?? .main
public struct Config {
public static var myApp: String {
return ProcessInfo.processInfo.environment["PROJECT_TYPE"] ?? "main"
}
}
환경 변수 넣어주는 방법은 [Edit Scheme > Run > Arguments > Environment Variables] 에서 name 과 value 를 추가해주면 된다.
이런 식으로 설정을 해두면 열거형 안에 static let 으로 선언해둔 color 값들을 프로젝트 타입에 따라 분기처리해줄 수 있다.
둘 다 상관은 없지만 설정값을 직접 주입하는 방식이 좀 더 명시적인 것 같기도 하고,
어짜피 cutom font 를 사용하려면 어짜피 FontConfiguration도 초기 설정이 필요하기 때문에
초기화 할때 함께 넣어주고자 첫번째 방법으로 적용을 해주었다.
728x90
반응형
'초보 iOS 개발자의 일상 > 개발 업무' 카테고리의 다른 글
[iOS] 웹뷰 파일 및 사진 첨부 구분하기 (0) | 2024.08.19 |
---|---|
Unlisted app distribution 등록되지 않은 앱 배포 (+ Enterprise 배포를 하지 못한 이유) (0) | 2024.07.22 |
Create and publish Swift Package Manager (SPM 생성하는 법 + Package 구성 추가) (0) | 2024.07.18 |
[긴급🚨] Privacy Manifest 추가하기 (0) | 2024.04.03 |
[iOS] 네트워크 속도 제어 (iPhone & Mac) (0) | 2024.01.25 |