Gio*_*odz 55 random colors func uicolor swift
如何使用Swift制作随机颜色功能?
import UIKit
class ViewController: UIViewController {
var randomNumber = arc4random_uniform(20)
var randomColor = arc4random()
//Color Background randomly
func colorBackground() {
// TODO: set a random color
view.backgroundColor = UIColor.yellow
}
}
Run Code Online (Sandbox Code Playgroud)
ABa*_*ith 159
您将需要一个函数来生成CGFloat
0到1范围内的随机s:
extension CGFloat {
static func random() -> CGFloat {
return CGFloat(arc4random()) / CGFloat(UInt32.max)
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以用它来创建一个随机颜色:
extension UIColor {
static func random() -> UIColor {
return UIColor(red: .random(),
green: .random(),
blue: .random(),
alpha: 1.0)
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想要一个随机的alpha,只需为它创建另一个随机数.
您现在可以像这样分配视图的背景颜色:
self.view.backgroundColor = .random()
Run Code Online (Sandbox Code Playgroud)
Ork*_*nov 60
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)
}
}
Run Code Online (Sandbox Code Playgroud)
extension CGFloat {
static var random: CGFloat {
return CGFloat(arc4random()) / CGFloat(UInt32.max)
}
}
extension UIColor {
static var random: UIColor {
return UIColor(red: .random, green: .random, blue: .random, alpha: 1.0)
}
}
Run Code Online (Sandbox Code Playgroud)
let myColor: UIColor = .random
Run Code Online (Sandbox Code Playgroud)
Bha*_*ani 28
创建一个生成随机颜色的函数:
func getRandomColor() -> UIColor {
//Generate between 0 to 1
let red:CGFloat = CGFloat(drand48())
let green:CGFloat = CGFloat(drand48())
let blue:CGFloat = CGFloat(drand48())
return UIColor(red:red, green: green, blue: blue, alpha: 1.0)
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以在需要随机颜色时调用此函数.
self.view.backgroundColor = getRandomColor()
Run Code Online (Sandbox Code Playgroud)
Xea*_*aza 13
import SwiftUI
extension Color {
static var random: Color {
return Color(red: .random(in: 0...1),
green: .random(in: 0...1),
blue: .random(in: 0...1))
}
}
Run Code Online (Sandbox Code Playgroud)
let randomColor: Color = .random
Leo*_*bus 12
对于随机的纯色,可以使用UIColor HSB初始化程序,并且仅对色调进行随机化:
extension UIColor {
static var random: UIColor {
return .init(hue: .random(in: 0...1), saturation: 1, brightness: 1, alpha: 1)
}
}
Run Code Online (Sandbox Code Playgroud)
let color1: UIColor = .random
let color2: UIColor = .random
let color3: UIColor = .random
let color4: UIColor = .random
let color5: UIColor = .random
Run Code Online (Sandbox Code Playgroud)
使用Swift 4.2,您可以使用已添加的新随机函数来简化此操作:
extension UIColor {
static func random () -> UIColor {
return UIColor(
red: CGFloat.random(in: 0...1),
green: CGFloat.random(in: 0...1),
blue: CGFloat.random(in: 0...1),
alpha: 1.0)
}
}
Run Code Online (Sandbox Code Playgroud)
还有更多的细节在这里.
斯威夫特4.2
我添加此答案是因为它使用了不同的方法,并且由于许多以前的答案都需要附加的语法糖,因此我认为不应将其作为首选。Vanilla Swift赢得了胜利。
extension UIColor {
/**
* Returns random color
* ## Examples:
* self.backgroundColor = UIColor.random
*/
static var random: UIColor {
let r:CGFloat = .random(in: 0...1)
let g:CGFloat = .random(in: 0...1)
let b:CGFloat = .random(in: 0...1)
return UIColor(red: r, green: g, blue: b, alpha: 1)
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 4.2扩展
extension UIColor {
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 random() -> UIColor {
return UIColor(rgb: Int(CGFloat(arc4random()) / CGFloat(UINT32_MAX) * 0xFFFFFF))
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
let color = UIColor.random()
Run Code Online (Sandbox Code Playgroud)
小智 5
斯威夫特 5.1
使用此函数并生成随机颜色。
例如view.backgroundColor = random()
func random() -> UIColor {
return UIColor(red: .random(in: 0...1),
green: .random(in: 0...1),
blue: .random(in: 0...1),
alpha: 1.0)
}
Run Code Online (Sandbox Code Playgroud)