Ale*_*ton 4 ios swift ios13 ios-darkmode
我的应用程序广泛使用了 CAGradientLayers,当暗/亮模式切换时,它们显然不会自动更新它们的颜色。但是,当应用程序关闭并重新打开时,它们会更新颜色。
我知道我可以使用以下代码来检测更改并单独重新加载每个视图
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
//
}
Run Code Online (Sandbox Code Playgroud)
但是,我正在寻找不需要我单独更新每个视图的修复程序。有没有办法检测亮/暗模式更改(可能在应用程序委托中)并强制整个应用程序自行重新加载(好像它已被强制关闭并重新打开)?
没有办法以这种方式“重新加载您的应用程序”。问题出现是因为CAGradientLayer使用CGColor,它不会动态适应系统样式。
我通过UIView在渐变层周围包裹一个来解决这个问题,该层实现了相应traitCollectionDidChange地更新渐变的颜色。也许您可以这样做,并将其用作子视图而不是子图层。