UIColor permet de personnaliser la couleur du mode sombre, donne un ensemble sémantique de couleurs "d'Apple", et permet également de définir non seulement la couleur, mais aussi le motif de remplissage de l'espace, ce qui nous interpelle que UIColor n'est pas du tout une couleur. Jetons un coup d'œil à ces salles UIColor.
UIColor est une classe qui stocke les données de couleur et de transparence. La couleur dans iOS peut être représentée dans différents espaces colorimétriques, dont le plus connu est RVB. En fait, la couleur elle-même est stockée dans la propriété cgColor de la classe CGColor. Il existe plusieurs entités dans iOS qui peuvent stocker des informations de couleur - chacune pour son propre cadre:
pour UIKit c'est la classe UIColor,
pour SwiftUI c'est une structure Color,
pour Core Graphics c'est la classe CGColor,
pour Core Image, il s'agit de la classe CIColor
Dans cet article, je vais essayer de parler de la classe UIColor, qui fait partie du framework UIKit.
Couleurs du système
UIKit a des couleurs prédéfinies que vous pouvez utiliser dans votre projet. Par exemple, vert UIColor.green ou souvent juste .green suffit. Une écriture comme celle-ci utilisera une couleur spécifique avec des valeurs RVB de 0,0, 1,0, 0,0 et un niveau de transparence de 1,0. Mais dans UIColor, la couleur UIColor.systemGreen est également définie. En quoi est-ce différent de l'UIColor.green habituel?
Depuis iOS 13.0, le mode sombre est apparu. L'utilisateur peut choisir dans les paramètres du système dans quel thème de couleur il est plus confortable pour lui de travailler - dans un thème clair ou dans un thème sombre. Et la couleur verte de ces modes sera légèrement différente. De plus, pour une perception confortable, l'utilisateur peut choisir un mode de contraste élevé qui augmente le contraste entre les éléments d'interface et l'arrière-plan. Et la couleur verte pour ce mode sera également différente.
, , , 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, - (. ).
- , . " ", " ".
Bien qu'UIColor soit une classe assez simple, elle fournit des capacités de gestion des couleurs basées sur les paramètres actuels. De plus, comme nous l'avons vu, il peut définir non seulement la couleur, mais également la méthode globale de remplissage de l'espace. Pour aider les développeurs, Apple propose un ensemble de couleurs sémantiques qui simplifient le développement et vous permettent de modifier légèrement la couleur des éléments d'interface.