UIColor可以用深色和浅色两种颜色初始化吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIColor可以用深色和浅色两种颜色初始化吗?相关的知识,希望对你有一定的参考价值。
我在训练应用中使用随机的蜡笔颜色(弹跳的圆圈),但是当我的iPad处于黑暗模式时,这些蜡笔看起来非常淡淡。我可以用两种颜色初始化UIColor吗?也许像这样:
UIColor(forLightMode: UIColor, forDarkMode: UIColor)
我当前的应用正在正确创建新颜色,但是当我从暗模式更改为亮模式时,它们不会自动更改。该应用程序刚刚开始从pastel
集生成新的。
func makeRandomColor() -> UIColor
let fullRange : ClosedRange<CGFloat> = 0...255
let pastelRange : ClosedRange<CGFloat> = 127...255
let randomPastelRed = CGFloat.random(in: pastelRange) / 255
let randomPastelGreen = CGFloat.random(in: pastelRange) / 255
let randomPastelBlue = CGFloat.random(in: pastelRange) / 255
let randomRed = CGFloat.random(in: fullRange) / 255
let randomGreen = CGFloat.random(in: fullRange) / 255
let randomBlue = CGFloat.random(in: fullRange) / 255
let randomAlpha = CGFloat.random(in: 0.6...1)
return UIColor.init(dynamicProvider: traitCollection in
if traitCollection.userInterfaceStyle == .dark
return UIColor(
red: randomRed,
green: randomGreen,
blue: randomBlue,
alpha: randomAlpha
)
else
return UIColor(
red: randomPastelRed,
green: randomPastelGreen,
blue: randomPastelBlue,
alpha: randomAlpha
)
)
答案
您需要通过从traitCollectionDidChange
或setNeedsLayout()
调用UIView
或类似方法来收听UIViewController
通知并重绘UI。有关更多信息,请检查Implementing Dark Mode on iOS〜22min
以上是关于UIColor可以用深色和浅色两种颜色初始化吗?的主要内容,如果未能解决你的问题,请参考以下文章