我想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
}
如何修改随机扩展名以选择随机的暖色或冷的随机色。
有什么建议吗?
如果首先生成数字,则可以在计算blue
时使用red
的值,如下所示...
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)
}
}
这将满足您对冷的红色小于蓝色,而暖的蓝色小于红色的要求。
Fogmeister的答案符合技术要求,但存在一些问题。对于暖色,如果红色足够低,则看不到它。暖色的蓝色成分可能与红色非常接近,以至于没有可见的差异,等等。
我建议这样做:
extension UIColor {
static var warm: UIColor {
let red: CGFloat = .random(in: 0.5...1) /Force red to be at least 0.5
let blue: CGFloat = .random(in: 0..<0.4) //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...0.5) //Force blue to be small
let red: CGFloat = .random(in: 0.6..<1.0) //Force red to be larger
return UIColor(red: red, green: .random(in: 0...1), blue: blue, alpha: 1)
}
}