我在iOS 13中切换模式时遇到了颜色切换的问题。
问题出现在你在最近使用的应用中看到应用程序时。UIColor会改变,但cgColor不会改变。
当你打开应用程序时,它会有效地改变,但只是在最近使用的应用程序中不会改变。
我正在使用“traitCollectionDidChange”方法,如下面苹果文档所述。 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)
}
}