[swift] SwiftyUserDefaults와 함께하는 라이트/다크 모드 지원하기

많은 사용자들이 라이트 모드와 다크 모드를 선호하므로, 앱 개발자는 이러한 사용자들의 선호도를 충족시킬 수 있는 기능을 제공해야 합니다.

이번 포스트에서는 SwiftyUserDefaults 라이브러리를 사용하여 iOS 앱에서 라이트 모드와 다크 모드를 지원하는 방법을 알아보겠습니다.

SwiftyUserDefaults란?

SwiftyUserDefaults는 UserDefaults를 더욱 쉽고 간편하게 사용할 수 있도록 도와주는 라이브러리입니다. 기본 UserDefaults의 번거로운 작업을 처리해주고, 타입 안전성과 편리한 접근 방법을 제공합니다.

시작하기 전에

먼저, SwiftyUserDefaults를 프로젝트에 추가해야 합니다. 이를 위해 CocoaPods를 사용하거나, 수동으로 라이브러리 파일을 추가할 수 있습니다.

라이트/다크 모드 지원하기

  1. 색상 정의하기

    앱에서 사용할 색상을 라이트 모드와 다크 모드에 따라 다르게 정의해야 합니다. 이를 위해 UIColor의 extension을 사용하면 간편하게 색상을 정의할 수 있습니다.

    import UIKit
    
    extension UIColor {
        static var appBackground: UIColor {
            if #available(iOS 13.0, *) {
                return UIColor { traitCollection in
                    return traitCollection.userInterfaceStyle == .dark ?
                        UIColor.black : UIColor.white
                }
            } else {
                return UIColor.white
            }
        }
    }
    

    위의 코드는 appBackground라는 이름의 색상을 정의하는데, 다크 모드일 때는 검은색, 라이트 모드일 때는 흰색을 반환합니다.

  2. User Defaults 사용하기

    SwiftyUserDefaults를 사용하여 설정값을 저장하고, 읽어올 수 있습니다. 아래의 코드는 isDarkModeEnabled라는 설정값을 저장하고, 읽어오는 예시입니다.

    import SwiftyUserDefaults
    
    extension DefaultsKeys {
        static let isDarkModeEnabled = DefaultsKey<Bool>("isDarkModeEnabled")
    }
    
    let isDarkModeEnabled = Defaults[.isDarkModeEnabled]
    

    위의 코드에서 isDarkModeEnabled는 라이트 모드와 다크 모드의 설정값을 저장합니다.

  3. 라이트/다크 모드 적용하기

    앱이 실행될 때 설정값을 읽어와서 라이트 모드와 다크 모드를 적용해야 합니다. 아래의 코드는 앱이 실행될 때 isDarkModeEnabled 설정값을 읽어와서 적절한 색상을 적용하는 예시입니다.

    if isDarkModeEnabled {
        view.backgroundColor = .appBackground
    } else {
        view.backgroundColor = .white
    }
       
    #라이트/다크 모드 설정을 변경할 때마다 변경된 값이 저장되는 유저디폴트 값을 변경하면 됩니다.
    #ex)
    UserDefaults.standard.set(isDarkModeEnabled, forKey: "isDarkModeEnabled")
    #ex2)
    Defaults[.isDarkModeEnabled] = true
    

    위의 코드에서 isDarkModeEnabled 값에 따라 적절한 색상을 설정합니다.

이제 SwiftyUserDefaults를 사용하여 iOS 앱에서 라이트 모드와 다크 모드를 간편하게 지원할 수 있습니다. 사용자의 환경 설정을 적용하여 앱의 색상을 자동으로 변경하는 이러한 기능은 사용자들에게 좋은 사용자 경험을 제공할 수 있습니다.