簡體   English   中英

暗/亮模式更改時可以重新加載應用程序嗎?

[英]Possible to reload app when dark/light mode changes?

我的應用廣泛使用 CAGradientLayers,當切換暗/亮模式時,它們顯然不會自動更新其 colors。 當應用程序關閉並重新打開時,他們將更新他們的 colors。

我知道我可以使用以下代碼來檢測更改並單獨重新加載每個視圖

 override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
        // 
    }

但是,我正在尋找不需要我單獨更新每個視圖的修復程序。 有沒有辦法檢測亮/暗模式更改(可能在應用程序委托內)並強制整個應用程序重新加載(好像它已被強制關閉並重新打開)?

沒有辦法以這種方式“重新加載您的應用程序”。 出現問題是因為CAGradientLayer使用CGColor ,它不能動態適應系統樣式。

我通過在實現traitCollectionDidChange的漸變層周圍包裹UIView來解決該問題,以相應地更新漸變的 colors。 也許您可以這樣做並將其用作子視圖而不是子層。

您可以創建一個覆蓋 traitCollectionDidChange 的超級 class traitCollectionDidChange

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM