我想randomly选择2种颜色。但它必须是随机的cold颜色和随机的warm颜色。
我正在使用这个extension获取一个随机颜色:
extension UIColor {
static var random: UIColor {
return UIColor(red: .random(in: 0...1),
green: .random(in: 0...1),
blue: .random(in: 0...1),
alpha: 1.0)
}
}根据这个post,我们可以假设:
if (B > R) {
color = cool
} else {
color = warm
}如何修改我的随机扩展来选择随机暖色或随机冷色。
有什么建议吗?
发布于 2020-01-21 05:06:17
Fogmeister的答案符合技术要求,但也存在一些问题。对于暖色,如果红色足够低,你就看不到它。暖色的蓝色成分可能与红色非常接近,以至于没有明显的区别,等等。
我建议这样做:
extension UIColor {
static var warm: UIColor {
let red: CGFloat = .random(in: 0.6...1) /Force red to be at least 0.6
let blue: CGFloat = .random(in: 0..<0.5) //Force blue to be smaller
return UIColor(red: red, green: .random(in: 0...1), blue: blue, alpha: 1)
}
static var cool: UIColor {
let blue: CGFloat = .random(in: 0.6..<1.0) //Force blue to be > 0.6
let red: CGFloat = .random(in: 0...0.5) //Force red to be smaller
return UIColor(red: red, green: .random(in: 0...1), blue: blue, alpha: 1)
}
}发布于 2020-01-20 23:38:38
如果您首先生成数字,则可以在计算red时使用blue的值,如下所示...
extension UIColor {
static var warm: UIColor {
let red: CGFloat = .random(in: 0...1)
let blue: CGFloat = .random(in: 0..<red)
return UIColor(red: red, green: .random(in: 0...1), blue: blue, alpha: 1)
}
static var cool: UIColor {
let blue: CGFloat = .random(in: 0...1)
let red: CGFloat = .random(in: 0..<blue)
return UIColor(red: red, green: .random(in: 0...1), blue: blue, alpha: 1)
}
}这将满足您的需求,冷是红色小于蓝色和温暖是蓝色小于红色。
https://stackoverflow.com/questions/59826377
复制相似问题