UIColor ermöglicht es, die Farbe für den Dunkelmodus anzupassen, gibt einen semantischen Satz von Farben "von Apple" und ermöglicht es, nicht nur die Farbe, sondern auch das Muster des Füllens des Raums festzulegen, was uns anruft dass UIColor überhaupt keine Farbe ist. Werfen wir einen kurzen Blick auf diese UIColor-Hallen.
UIColor ist eine Klasse, die Farb- und Transparenzdaten speichert. Farbe in iOS kann in verschiedenen Farbräumen dargestellt werden, von denen der bekannteste RGB ist. Tatsächlich wird die Farbe selbst in der Eigenschaft cgColor der CGColor-Klasse gespeichert. In iOS gibt es mehrere Entitäten, die Farbinformationen speichern können - jede für ihr eigenes Framework:
für UIKit ist es die UIColor-Klasse,
für SwiftUI ist es eine Farbstruktur,
Für Core Graphics ist dies die CGColor-Klasse.
Für Core Image ist dies die CIColor-Klasse
In diesem Artikel werde ich versuchen, über die UIColor-Klasse zu sprechen, die Teil des UIKit-Frameworks ist.
Systemfarben
UIKit verfügt über einige vordefinierte Farben, die Sie in Ihrem Projekt verwenden können. Zum Beispiel reicht grünes UIColor.green oder oft nur .green aus. Beim Schreiben auf diese Weise wird eine bestimmte Farbe mit RGB-Werten von 0,0, 1,0, 0,0 und einer Transparenzstufe von 1,0 verwendet. In UIColor wird jedoch auch die Farbe UIColor.systemGreen definiert. Wie unterscheidet es sich vom üblichen UIColor.green?
Seit iOS 13.0 ist der Dunkle Modus erschienen. Der Benutzer kann in den Systemeinstellungen auswählen, in welchem Farbthema er bequemer arbeiten kann - in einem hellen oder in einem dunklen Thema. Die grüne Farbe für diese Modi unterscheidet sich geringfügig. Darüber hinaus kann der Benutzer für eine komfortable Wahrnehmung einen kontrastreichen Modus wählen, der den Kontrast zwischen den Oberflächenelementen und dem Hintergrund erhöht. Und die grüne Farbe für diesen Modus wird auch anders sein.
, , , 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, - (. ).
- , . " ", " ".
Obwohl UIColor eine relativ einfache Klasse ist, bietet es Farbmanagementfunktionen basierend auf den aktuellen Einstellungen. Darüber hinaus kann, wie wir gesehen haben, nicht nur die Farbe, sondern auch die Gesamtmethode zum Ausfüllen des Raums festgelegt werden. Um Entwicklern zu helfen, bietet Apple eine Reihe semantischer Farben an, die die Entwicklung vereinfachen und es Ihnen ermöglichen, die Farbe von Oberflächenelementen geringfügig zu ändern.