如何在 UIColor 中获得随机 warm/cold 颜色?
How to get random warm/cold color in UIColor?
我想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
}
如何修改我的随机扩展程序以能够 select 随机暖色或随机冷色。
有什么建议吗?
如果您先生成数字,则可以在计算 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)
}
}
这将满足您的要求,冷色是红色小于蓝色,暖色是蓝色小于红色。
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)
}
}
我想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
}
如何修改我的随机扩展程序以能够 select 随机暖色或随机冷色。
有什么建议吗?
如果您先生成数字,则可以在计算 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)
}
}
这将满足您的要求,冷色是红色小于蓝色,暖色是蓝色小于红色。
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)
}
}