我在训练应用中使用随机的蜡笔颜色(弹跳的圆圈),但是当我的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