반응형
SwiftUI에서 색상을 지정하기 위해서는 Color
라는 구조체를 사용한다. 여기에는 당연히 RGB 값을 넣어서 마음대로 색상을 만들 수 있지만 특별히 정해진 색상을 별도의 이름으로 정의해 두기도 했다. 예를 들자면 accentColor
나 primary
혹은 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
반응형
'기술적인 이야기 > 애플 플랫폼 개발' 카테고리의 다른 글
SwiftUI로 액션시트 띄우기 (iOS 15, macOS Monterey) (273) | 2021.10.12 |
---|---|
SwiftUI에서 경고창(Alert Dialog) 띄우기(iOS 15, macOS Monterey) (276) | 2021.10.08 |
오늘도 Xcode에게 졌다 (266) | 2021.09.03 |
Swift 5.5의 Continuation (262) | 2021.07.16 |
Swift 5.5의 async/await 살펴보기 (265) | 2021.07.13 |
댓글