暗/亮模式更改时是否可以重新加载应用程序?

时间:2019-10-24 15:44:48

标签: ios swift ios13 ios-darkmode

我的应用广泛使用了CAGradientLayers,当切换暗/亮模式时,它们显然不会自动更新其颜色。但是,当应用程序关闭并重新打开时,它们将更新其颜色。

我知道我可以使用以下代码检测更改并分别重新加载每个视图

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

但是,我正在寻找不需要我单独更新每个视图的修补程序。有没有一种方法可以检测到亮/暗模式更改(可能在应用程序委托内),并强制整个应用程序重新加载自身(就像已被强制关闭并重新打开一样)?

2 个答案:

答案 0 :(得分:3)

无法以这种方式“重新加载您的应用”。之所以出现此问题,是因为']'使用的CAGradientLayer无法动态适应系统风格。

我通过在实现CGColor的渐变层周围包裹UIView来解决此问题,以相应地更新渐变的颜色。也许您可以做同样的事情,并将其用作子视图而不是子层。

答案 1 :(得分:0)

您可以创建一个覆盖traitCollectionDidChange的超类UIViewController