[英]How to select a random color in Swift
嘗試這個。 它應該工作。
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)])
}
}
如果只想使用在問題中添加的顏色,則在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)
)
}
要從UIColors
列表中獲得隨機顏色,只需在UIColor
元素的collection
上調用randomElement()
,即
extension UIColor {
static func random(from colors: [UIColor]) -> UIColor? {
return colors.randomElement()
}
}
您可以像這樣使用它:
let randomColor = UIColor.random(from: [.red, .yellow, .green, .blue, .purple])
我在這里使用了示例顏色。 使用您要使用的特定顏色。
如果您使用十六進制值形式的顏色,則需要在擴展中添加另一個方法以將該hex
值轉換為UIColor
實例。
如有任何問題,請通知我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.