0
votes

Émettre la commutation CGColor dans le mode sombre iOS 13

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)
    }
}


0 commentaires

3 Réponses :


4
votes

Pour CGColor, vous devez utiliser

layerColor.backgroundColor = UIColor(named: "layerColor")?.resolvedColor(with: self.traitCollection).cgColor


1 commentaires

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.



0
votes

Votre application de toutes les lignes ici,

Just vous mettez cette ligne dans votre fichier AppDelegate xxx

ou . Vous pouvez ajouter Info.plist comme celui-ci xxx


2 commentaires

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



0
votes

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.


0 commentaires