Swift/Swift 개발 노트

[SwiftUi] 다크모드 적용하기

힛해 2024. 3. 12. 13:41
728x90

라이트모드만을 작업하다가 다크모드로 실행시켰을때 피그마와 다른 디자인 또는 원치 않는 스타일로 보여 당혹스러웠다.

 

 

 

테마 적용하기

struct Theme {
    static func myBackgroundColor(forScheme scheme: ColorScheme) -> Color {
        
        let lightColor = Color.white
        let darkColor = Color.init(#colorLiteral(red: 0.06274510175, green: 0, blue: 0.1921568662, alpha: 1))
        
        switch scheme {
        case .light:        return lightColor
        case .dark:         return darkColor
        @unknown default:   return lightColor
        }
        
    }
    
    static func myButtonBackgroundColor(forScheme scheme: ColorScheme) -> Color {
        
        let lightColor = Color.init(#colorLiteral(red: 0.8549019694, green: 0.250980407, blue: 0.4784313738, alpha: 1))
        let darkColor = Color.init(#colorLiteral(red: 0.5568627715, green: 0.3529411852, blue: 0.9686274529, alpha: 1))
        
        switch scheme {
        case .light:        return lightColor
        case .dark:         return darkColor
        @unknown default:   return lightColor
        }
        
    }

}

 

사용방법 

struct ContentView: View {
    
    @State fileprivate var shouldShowAlert = false
    
    @Environment(\.colorScheme) var scheme
    
    var body: some View {

        ZStack{
            Theme.myBackgroundColor(forScheme: scheme)
            VStack{
              Button(action: {
                    print("버튼이 클릭되었다")
                    shouldShowAlert.toggle()
                }, label: {
                    Text("로그인 하러 가기")
                        
                        .background(Theme.myButtonBackgroundColor(forScheme: scheme))
...