Je suis confronté à des problèmes de commutation de couleurs lorsque le mode de changement dans iOS 13.
Le problème est lorsque vous voyez l'application dans les applications récentes. Les uicolors changeront mais CGColor ne changera pas. P>
Il changera efficacement lorsque vous ouvrez l'application, mais il ne changera que cela ne changera pas. P>
J'utilise "TraitCollectionDidChange" comme étant mentionné dans le document d'Apple suivant. https://developer.apple.com/documentation/xcode/supporting_dark_mode_in_your_interface P >
Veuillez consulter la vidéo pour comprendre plus clairement forte>
https://www.youtube.com/watch?v=C- PCVUPMQ9U & Feature = YouTu.be P>
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)
}
}
3 Réponses :
Pour CGColor, vous devez utiliser
layerColor.backgroundColor = UIColor(named: "layerColor")?.resolvedColor(with: self.traitCollection).cgColor
Appréciez votre réponse, mais malheureusement, cela ne fonctionne pas pour moi. Comme vous pouvez le constater dans vidéo que j'ai posté dans question. Ce problème n'est pas si votre application est intérieure, mais si votre application est en arrière-plan et que vous modifiez le mode, Ouvrez la vue Resent et vous pouvez trouver la couleur changer qui appartient à UIView et UIViewController mais la couleur de Calayer change à tort.
Votre application de toutes les lignes ici,
Just vous mettez cette ligne dans votre fichier AppDelegate P> ou strong>. Vous pouvez ajouter Info.plist comme celui-ci p>
Khushal je cherche à résoudre ce problème. La réponse que vous avez suggérée est d'empêcher le support en mode sombre. Ce qui n'est pas applicable pour moi. Merci beaucoup pour votre temps, mais ce n'est pas ce que je veux savoir.
CGColor n'est pas pris en charge par cette solution, la réponse correcte est de Jawad
J'ai eu le même problème. Je l'ai résolu en retirant le sous-couche, le recréant et en ajoutant ce nouveau avec la couleur désirée. Cela fonctionne à la fois sur iOS13 et iOS14. P>