我已经在我的SWIFT应用程序中为OS 13设置了一个动态UIColors来处理黑暗模式。
例如:
static var background: UIColor {
if #available(iOS 13, *) {
return UIColor { (traitCollection: UITraitCollection) -> UIColor in
if traitCollection.userInterfaceStyle == .dark {
return UIColor(hex: "2b2d42")
} else {
return UIColor(hex: "FFFFFF")
}
}
} else {
return UIColor(hex: "FFFFFF")
}
}
在代码中使用CGColor代替UIColor的地方,我计划调用traitCollectionDidChange例如,这样的UIView:
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
layer.fillColor = color.cgColor
}
它可以工作,但我注意到的是,在改变设置模式后,如果我使用底部滑动手势切换回我的应用程序,那么我可以看到所有的UIColors已经在传入的屏幕上更新了,但是CGColors只有在应用程序实际到达前台时才会被更新。traitCollectionDidChange叫做。
https://i.stack.imgur.com/ajqhO.jpg
是否有更好的方法,使CGColors也得到立即更新?
转到Xcode>Assets.xcAsset>新颜色集>为光明和黑暗外观设置颜色
现在,在视图背景颜色中设置此颜色。
self.view.backgroundColor = UIColor.init(named: "ColorForCameraScreen")
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。