我有一些代码可以选择一些颜色,我想知道如果我想在代码下选择这些颜色之间的随机颜色怎么办?
extension UIColor {
static var random: UIColor {
return UIColor(red: .random(in: 0...2), green: .random(in: 0...2), blue: .random(in: 0...2), alpha: 1.0)
}
}
我想在扩展程序中选择的颜色
答案 0 :(得分:1)
尝试一下。应该可以。
extension UIColor {
static func random() -> UIColor {
return UIColor.rgb(CGFloat.random(in: 0..<256), green: CGFloat.random(in: 0..<256), blue: CGFloat.random(in: 0..<256))
}
static func rgb(_ red: CGFloat, green: CGFloat, blue: CGFloat) -> UIColor {
return UIColor(red: red/255, green: green/255, blue: blue/255, alpha: 1)
}
convenience init(red: Int, green: Int, blue: Int) {
assert(red >= 0 && red <= 255, "Invalid red component")
assert(green >= 0 && green <= 255, "Invalid green component")
assert(blue >= 0 && blue <= 255, "Invalid blue component")
self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: 1.0)
}
convenience init(rgb: Int) {
self.init(
red: (rgb >> 16) & 0xFF,
green: (rgb >> 8) & 0xFF,
blue: rgb & 0xFF
)
}
static func getColor() -> UIColor {
let chooseFrom = [0x064545,0x708545,0x45580] //Add your colors here
return UIColor.init(rgb: chooseFrom[Int.random(in: 0..<chooseFrom.count)])
}
}
答案 1 :(得分:1)
如果您只想使用在问题中添加的颜色,请在Array
中添加所需的颜色十六进制字符串。
let arrColors = ["ff0000", "228B22", "FFFF00", "800080", "ffa500"] // Use your color hex
现在您需要像这样从上面的数组中选择随机对象。
let randomIndex = Int(arc4random_uniform(UInt32(arrColors.count)))
self.vwNavigationBar.backgroundColor = self.hexStringToUIColor(hex: arrColors[randomIndex])
将十六进制字符串转换为颜色的功能
func hexStringToUIColor (hex:String) -> UIColor {
var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
if (cString.hasPrefix("#")) {
cString.remove(at: cString.startIndex)
}
if ((cString.count) != 6) {
return UIColor.gray
}
var rgbValue:UInt32 = 0
Scanner(string: cString).scanHexInt32(&rgbValue)
return UIColor(
red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
答案 2 :(得分:0)
要从UIColors
的列表中获得随机颜色,只需在randomElement()
个元素的collection
上调用 UIColor
,即>
extension UIColor {
static func random(from colors: [UIColor]) -> UIColor? {
return colors.randomElement()
}
}
您可以像这样使用它:
let randomColor = UIColor.random(from: [.red, .yellow, .green, .blue, .purple])
我在这里使用了示例颜色。使用您要使用的特定颜色。
如果您使用 hex 值形式的颜色,则需要在扩展名中添加另一种方法,以将该hex
值转换为UIColor
实例。
如有任何问题,请通知我。