UIColorを使用すると、ダークモードの色をカスタマイズしたり、「Apple製」のセマンティックな色のセットを提供したり、色だけでなく、スペースを埋めるパターンも設定したりすることができます。そのUIColorはまったく色ではありません。これらのUIColorホールを簡単に見てみましょう。
UIColorは、色と透明度のデータを格納するクラスです。iOSの色は、さまざまな色空間で表すことができます。その中で最も有名なのはRGBです。実際、色自体はCGColorクラスのcgColorプロパティに格納されています。iOSには、色情報を保存できるエンティティがいくつかあります。それぞれが独自のフレームワーク用です。
UIKitの場合はUIColorクラスです。
SwiftUIの場合、これはカラー構造です。
コアグラフィックスの場合、これはCGColorクラスです。
CoreImageの場合これはCIColorクラスです
この記事では、UIKitフレームワークの一部であるUIColorクラスについて説明します。
システムカラー
UIKitには、プロジェクトで使用できるいくつかの定義済みの色があります。たとえば、緑のUIColor.greenまたは多くの場合は.greenだけで十分です。このように書くと、RGB値が0.0、1.0、0.0、透明度レベルが1.0の特定の色が使用されます。ただし、UIColorでは、色UIColor.systemGreenも定義されています。通常のUIColor.greenとどう違うのですか?
iOS 13.0以降、ダークモードが登場しました。ユーザーは、システム設定で、明るいテーマと暗いテーマのどちらのカラーテーマで作業するのがより快適かを選択できます。また、これらのモードの緑色はわずかに異なります。さらに、快適な知覚のために、ユーザーは、インターフェイス要素と背景の間のコントラストを高める高コントラストモードを選択できます。また、このモードの緑色も異なります。
, , , Apple, , . - , , "system...":
systemBlue
systemIndigo
systemOrange
systemPink
systemPurple
systemRed
systemTeal
systemYellow
- - , , .
, , - , , ..
systemGray
systemGray2
systemGray3
systemGray4
systemGray5
systemGray6
, , . .
Black White, . .
, . UIKit tintColor, , - , , , UISegmentControl .. - , brandColor primaryBrandColor/secondaryBrandColor. .
, - . , UILabel . , UILabel .red, :
let primaryTextColor = UIColor.red
UILabel :
label.textColor = primaryTextColor
- , . primaryTextColor.
. , .
UIKit
Apple , . , . UIKit .
:
label -
secondaryLabel -
tertiaryLabel -
quaternaryLabel -
, , secondaryLabel , tertiaryLabel .
:
systemFill
secondarySystemFill
tertiarySystemFill
quaternarySystemFill
Apple / , , ..
:
placeholderText
:
systemBackground
secondarySystemBackground
tertiarySystemBackground
.
:
systemGroupedBackground
secondarySystemGroupedBackground
tertiarySystemGroupedBackground
.grouped .
:
separator
opaqueSeparator
:
link
, :
darkText
lightText
UIKit , , .
, Dark Light
- XCode Assets Color Set, Dark Light Mode Appearances. , .
:
let color = UIColor(named: "ColorName")
" " iOS.
- , .
UIColor:
init(dynamicProvider: @escaping (UITraitCollection) -> UIColor)
UITraitCollection - , Dark Light , .. userInterfaceStyle .
:
let color = UIColor { traitCollection -> UIColor in
switch traitCollection.userInterfaceStyle {
case .light, .unspecified: return .white
case .dark: return .black
}
}
UIColor :
HSB, RGB
UIColor
- UIColor ...
init(patternImage image: UIImage)
UIColor, , . , , UILabel, - (. ).
- , . " ", " ".
UIColorはかなり単純なクラスですが、現在の設定に基づいたカラーマネジメント機能を提供します。さらに、私たちが見たように、それは色だけでなく、スペースを埋める全体的な方法も設定することができます。開発者を支援するために、Appleは、開発を簡素化し、インターフェイス要素の色をわずかに変更できるようにする一連のセマンティックカラーを提供しています。