🎨
[SwiftUI]Color, UIColor, Materialの一覧
SwiftUIで使用できる色
SwiftUIでは、
SwiftUIのColor
Color.orange
UIKitでのUIColor
Color(UIColor.systemOrange)
などを使って色を指定できます。
各値の数値を指定して、好きな色を作ることもできます。
//RGBと不透明度を指定
Color(red: 1.0, green: 0.58, blue: 0.0, opacity: 1.0)
//グレースケールと不透明度を指定
Color(white: 0.5, opacity: 1.0)
定義されている色を使用するメリット
先述したように色を自分で作ることもできますが、
Color.orange
などのように、基本的な色は定義されています。
定義されている色を使用することでライトモード、ダークモード、アクセシビリティの状態に応じて、自動的に最適な色に変化させることができます。
Name | Default | Accessible |
---|---|---|
.orange |
![]() |
![]() |
またUIColorはApple純正のコンポーネントに使われている色を指定することができ、
SwiftUIにはない[1]SearchBarなどを自作したい場合などに、純正とまったく同じ色に指定できます。
: Color
Standard colors
Name | Light | Dark |
---|---|---|
.black |
![]() |
![]() |
.blue |
![]() |
![]() |
.brown |
![]() |
![]() |
.clear |
![]() |
![]() |
.cyan |
![]() |
![]() |
.gray |
![]() |
![]() |
.green |
![]() |
![]() |
.indigo |
![]() |
![]() |
.mint |
![]() |
![]() |
.orange |
![]() |
![]() |
.pink |
![]() |
![]() |
.purple |
![]() |
![]() |
.red |
![]() |
![]() |
.teal |
![]() |
![]() |
.white |
![]() |
![]() |
.yellow |
![]() |
![]() |
Semantic colors
Name | Light | Dark |
---|---|---|
.accentColor |
![]() |
![]() |
.primary |
![]() |
![]() |
.secondary |
![]() |
![]() |
: UIColor
UI element colors
Label colors
Name | Light | Dark |
---|---|---|
.label |
![]() |
![]() |
.secondaryLabel |
![]() |
![]() |
.tertiaryLabel |
![]() |
![]() |
.quaternaryLabel |
![]() |
![]() |
Fill colors
Name | Light | Dark |
---|---|---|
.systemFill |
![]() |
![]() |
.secondarySystemFill |
![]() |
![]() |
.tertiarySystemFill |
![]() |
![]() |
.quaternarySystemFill |
![]() |
![]() |
Text colors
Name | Light | Dark |
---|---|---|
.placeholderText |
![]() |
![]() |
Tint color
Name | Light | Dark |
---|---|---|
.tintColor |
![]() |
![]() |
Standard content background colors
Name | Light | Dark |
---|---|---|
.systemBackground |
![]() |
![]() |
.secondarySystemBackground |
![]() |
![]() |
.tertiarySystemBackground |
![]() |
![]() |
Grouped content background colors
Name | Light | Dark |
---|---|---|
.systemGroupedBackground |
![]() |
![]() |
.secondarySystemGroupedBackground |
![]() |
![]() |
.tertiarySystemGroupedBackground |
![]() |
![]() |
Separator colors
Name | Light | Dark |
---|---|---|
.separator |
![]() |
![]() |
.opaqueSeparator |
![]() |
![]() |
Link color
Name | Light | Dark |
---|---|---|
.link |
![]() |
![]() |
Nonadaptable colors
Name | Light | Dark |
---|---|---|
.darkText |
![]() |
![]() |
.lightText |
![]() |
![]() |
Standard colors
Adaptable colors
Name | Light | Dark |
---|---|---|
.systemBlue |
![]() |
![]() |
.systemBrown |
![]() |
![]() |
.systemCyan |
![]() |
![]() |
.systemGreen |
![]() |
![]() |
.systemIndigo |
![]() |
![]() |
.systemMint |
![]() |
![]() |
.systemOrange |
![]() |
![]() |
.systemPink |
![]() |
![]() |
.systemPurple |
![]() |
![]() |
.systemRed |
![]() |
![]() |
.systemTeal |
![]() |
![]() |
.systemYellow |
![]() |
![]() |
Adaptable gray colors
Name | Light | Dark |
---|---|---|
.systemGray |
![]() |
![]() |
.systemGray2 |
![]() |
![]() |
.systemGray3 |
![]() |
![]() |
.systemGray4 |
![]() |
![]() |
.systemGray5 |
![]() |
![]() |
.systemGray6 |
![]() |
![]() |
Transparent color
Name | Light | Dark |
---|---|---|
.clear |
![]() |
![]() |
Fixed colors
Name | Light | Dark |
---|---|---|
.black |
![]() |
![]() |
.blue |
![]() |
![]() |
.brown |
![]() |
![]() |
.cyan |
![]() |
![]() |
.darkGray |
![]() |
![]() |
.gray |
![]() |
![]() |
.green |
![]() |
![]() |
.lightGray |
![]() |
![]() |
.magenta |
![]() |
![]() |
.orange |
![]() |
![]() |
.purple |
![]() |
![]() |
.red |
![]() |
![]() |
.white |
![]() |
![]() |
.yellow |
![]() |
![]() |
: Material
Viewのbackgroundなどを、すりガラス風の見た目にできます。
Name | Light | Dark |
---|---|---|
.ultraThinMaterial | ![]() |
![]() |
.thinMaterial | ![]() |
![]() |
.regularMaterial | ![]() |
![]() |
.thickMaterial | ![]() |
![]() |
.ultraThickMaterial | ![]() |
![]() |
.bar | ![]() |
![]() |
色関連の便利そうなモノ
文字色をライトモードとダークモードで別の色を指定する方法
文字色をライトモードの時は赤色にダークモードの時は黄色にしています。
@Environment(\.colorScheme) private var colorScheme
var body: some View {
VStack {
Text("Hello, world!")
.foregroundColor(colorScheme == .dark ? Color.yellow: Color.red)
}
}
↓colorschemeについての説明
Color, UIColorから色の要素を求める関数
func getColorElements(_ color: UIColor) -> (red: CGFloat?, green: CGFloat?, blue: CGFloat?, white: CGFloat?, opacity: CGFloat) {
let components = color.cgColor.components!
if components.count == 4 {
return (red: components[0], green: components[1], blue: components[2], white: nil, opacity: components[3])
} else {
return (red: nil, green: nil, blue: nil, white: components[0], opacity: components[1])
}
}
RGB値の色の場合
print(getColorElements(.orange))
// ↓戻り値
// (red: Optional(1.0), green: Optional(0.5), blue: Optional(0.0), white: nil, opacity: 1.0)
グレースケール値の色の場合
print(getColorElements(.gray))
// ↓戻り値
// (red: nil, green: nil, blue: nil, white: Optional(0.5), opacity: 1.0)
"SwiftUIで使用できる色"を確認できるアプリ
この記事で紹介したすべてのColor, Materialを実機で確認できるアプリをGitHubに公開しました。
ライトモード、ダークモード時のより詳しいRGB値や、アクセシビリティモード時のRGB値も確認できます。
-
NavigationViewの中には指定できますが、いろいろと制約があります。 ↩︎
Discussion