У меня проблемы с переключением цветов при изменении режима в iOS 13.
Проблема в том, что вы видите приложение в последних приложениях. UIColors изменится, но cgColor не изменится.
Он изменится эффективно, когда вы откроете приложение, но только в последнее время он не изменится.
Я использую метод "traitCollectionDidChange", как упомянуто в следующий документ Apple. https://developer.apple.com/documentation/xcode/supporting_dark_mode_in_your_interface
Пожалуйста, посмотрите видео, чтобы понять более ясно https://www.youtube.com/watch?v=C-pcVuPMQ9U&feature=youtu.be
class ViewController: UIViewController {
@IBOutlet weak var viewColor: UIView!
let layerColor = CALayer()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
setLayer()
setColors()
}
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
setColors()
}
}
func setColors() {
layerColor.backgroundColor = UIColor(named: "layerColor")?.cgColor
}
func setLayer() {
layerColor.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
viewColor.layer.addSublayer(layerColor)
}
}