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))
...