Мы можем использовать динамические c провайдеры для расширения классов UIColor и иметь цвета, которые немедленно изменяются на темные и светлые режимы, как это
extension UIColor {
static var myControlBackground: UIColor {
return UIColor { (traits) -> UIColor in
// Return one of two colors depending on light or dark mode
return traits.userInterfaceStyle == .dark ?
UIColor(red: 0.5, green: 0.4, blue: 0.3, alpha: 1) :
UIColor(red: 0.3, green: 0.4, blue: 0.5, alpha: 1)
}
}
}
Но как насчет UIImages?
I знать, что вы можете использовать этот метод
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
if traitCollection.hasDifferentColorAppearance(comparedTo:
previousTraitCollection) {
// Color change detected.
// Adjust the interface accordingly.
}
}
проблема в том, что этот метод не обнаруживает изменения, если приложение находится в фоновом режиме, когда происходит изменение. И метод динамического цвета c делает.
Любые идеи