开发者社区> 问答> 正文

如何在切换暗/亮模式时动态提供CGColor?

我已经在我的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也得到立即更新?

展开
收起
游客5akardh5cojhg 2019-12-19 21:05:06 721 0
1 条回答
写回答
取消 提交回答
  • 转到Xcode>Assets.xcAsset>新颜色集>为光明和黑暗外观设置颜色

    现在,在视图背景颜色中设置此颜色。

    self.view.backgroundColor = UIColor.init(named: "ColorForCameraScreen")
    
    
    2019-12-19 21:05:47
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载