본문 바로가기

SwiftUI에서 각 플랫폼의 배경색 사용하기

기술적인 이야기/애플 플랫폼 개발 2021. 10. 5.
반응형

SwiftUI에서 색상을 지정하기 위해서는 Color라는 구조체를 사용한다. 여기에는 당연히 RGB 값을 넣어서 마음대로 색상을 만들 수 있지만 특별히 정해진 색상을 별도의 이름으로 정의해 두기도 했다. 예를 들자면 accentColorprimary 혹은 secondary와 같은 일반적인 용도의 플랫폼 별 색상을 쉽게 사용할 수 있다.

그런데 모든 색상이 제공되는 것은 아니다. 예를 들어 윈도우의 배경색 종류가 몇 가지 있는데 이를 SwiftUI에서는 제공해 주지 않는다. 이를 위해서는 해당 플랫폼용, 즉 iOS의 경우 UIKIT 그리고 macOS의 경우 AppKit을 이용해 해당 색상을 가져오도록 코드를 작성할 수 있다. 아래와 같은 식으로 말이다.

public extension Color {
#if os(macOS)
    static let background = Color(NSColor.windowBackgroundColor)
    static let secondaryBackground = Color(NSColor.underPageBackgroundColor)
    static let tertiaryBackground = Color(NSColor.controlBackgroundColor)
#else
    static let background = Color(UIColor.systemBackground)
    static let secondaryBackground = Color(UIColor.secondarySystemBackground)
    static let tertiaryBackground = Color(UIColor.tertiarySystemBackground)
#endif
}

필요하다면 이런 식으로 색상을 보완해 나갈 수 있다. 굳이 사용법을 설명하지 않아도 될 정도로 간단한 코드다. 그리고 굳이 플랫폼을 가리지도 않는다.

요즘은 SwiftUI로 멀티플랫폼 앱을 만들 수도 있는데 애플에서 이런 색상 심볼을 늘려주지 않을까 생각되기도 하지만 안 할 가능성도 높으므로 알아두면 도움은 될 것 같다.

728x90
반응형

댓글