[swift] SwiftyUserDefaults를 사용하여 앱의 테마 관리하기

앱의 사용자 경험을 향상시키기 위해 테마 관리는 매우 중요합니다. 테마에 따라 앱의 색상, 폰트, 아이콘 등을 동적으로 변경할 수 있어야 합니다. 이러한 기능을 구현하기 위해 SwiftyUserDefaults 라이브러리를 사용하면 손쉽게 앱의 테마를 관리할 수 있습니다.

SwiftyUserDefaults란?

SwiftyUserDefaults는 UserDefaults를 간편하게 사용할 수 있도록 해주는 라이브러리입니다. UserDefaults는 기본적으로 Key-Value 형태로 데이터를 저장하고 관리하는 기능을 제공합니다. SwiftyUserDefaults는 이러한 UserDefaults를 좀 더 사용하기 쉽고 간결하게 사용할 수 있도록 도와줍니다.

테마 관리를 위한 설정

먼저, 테마 관리를 위해 UserDefaults를 설정해야 합니다. 우리는 Theme라는 Enum 타입을 정의하고, 다양한 테마 옵션들을 추가합니다.

enum Theme: String {
    case light
    case dark
    case blue
}

extension DefaultsKeys {
    static let theme = DefaultsKey<Theme>("theme")
}

위의 코드에서 DefaultsKeys.theme은 UserDefaults에서 테마 옵션을 저장할 key를 나타냅니다.

이제, 앱이 처음 시작될 때 기본 테마를 설정하도록 해야합니다. 앱의 AppDelegate에서 다음 코드를 추가합니다.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    UserDefaultsManager.setupInitialTheme()
    // ...
}

UserDefaultsManager는 우리가 만들 테마 관리 클래스입니다. 여기서 setupInitialTheme() 메서드는 앱이 처음 시작될 때 기본 테마를 설정하도록 합니다.

테마 변경하기

테마 옵션을 변경하기 위해선, UserDefaults 값을 업데이트해야 합니다. 사용자가 테마를 변경하면, 해당 테마 옵션을 UserDefaults에 저장하는 방식입니다.

func changeTheme(to theme: Theme) {
    Defaults[.theme] = theme
    // 테마에 따른 UI 업데이트 등 추가 작업 수행
}

위의 코드에서 Defaults[.theme]는 UserDefaults에서 theme 키에 해당하는 값을 설정하는 방식입니다. 이렇게 설정된 값은 앱 전체에서 사용할 수 있습니다.

앱의 테마 적용하기

앱의 테마를 적용하기 위해서는, 현재 테마 옵션을 가져와서 해당 테마에 맞는 UI 업데이트를 수행해야 합니다.

func applyTheme() {
    let currentTheme = Defaults[.theme]
    // 테마에 따른 UI 업데이트 수행
}

위의 코드에서 Defaults[.theme]는 UserDefaults에서 theme 키에 해당하는 값을 가져오는 방식입니다.

결론

SwiftyUserDefaults를 사용하여 앱의 테마 관리를 간편하게 구현할 수 있습니다. 테마 설정을 위한 Enum 타입을 정의하고, UserDefaults를 통해 테마 옵션을 저장하고 가져옵니다. 이를 통해 사용자가 앱의 테마를 손쉽게 변경하고, 해당 테마에 맞는 UI 업데이트를 수행할 수 있습니다.


참고 자료