Wie kann ich mit Swift eine zufällige Farbfunktion erstellen?
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
}
}
static func random() -> CGFloat
ist außerhalb von nutzlos,static func random() -> UIColor
so dass Sie die erste Methode innerhalb der zweiten deklarieren könnenFür Swift 4.2
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) } }
Für Swift 3 und höher:
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) } }
Verwendung:
let myColor: UIColor = .random
quelle
Erstellen Sie eine Funktion, um zufällige Farben zu generieren:
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) }
Jetzt können Sie diese Funktion aufrufen, wenn Sie eine zufällige Farbe benötigen.
self.view.backgroundColor = getRandomColor()
quelle
Für zufällige Volltonfarben können Sie den UIColor HSB-Initialisierer verwenden und nur den Farbton zufällig auswählen:
extension UIColor { static var random: UIColor { return .init(hue: .random(in: 0...1), saturation: 1, brightness: 1, alpha: 1) } }
let color1: UIColor = .random let color2: UIColor = .random let color3: UIColor = .random let color4: UIColor = .random let color5: UIColor = .random
quelle
0.16659 ... 0.16674
Mit Swift 4.2 können Sie dies vereinfachen, indem Sie die neuen Zufallsfunktionen verwenden, die hinzugefügt wurden:
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) } }
Weitere Details finden Sie hier .
quelle
UIColor(hue: CGFloat.random(in: 0...1.0/6.0), saturation: 1.0, brightness: 1.0, alpha: 1.0)
CGFloat.random(in: 1.0/6.0...1.0)
Swift 4.2 🔸
Ich füge diese Antwort hinzu, weil sie einen anderen Ansatz verwendet und weil viele der vorherigen Antworten zusätzlichen syntaktischen Zucker erfordern, der meiner Meinung nach nicht bevorzugt werden sollte. Vanilla Swift für den Sieg.
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) } }
quelle
Swift 4.2- Erweiterung
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)) } }
Verwendung:
let color = UIColor.random()
quelle
SwiftUI - Swift 5
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)) } }
Verwendung:
let randomColor: Color = .random
quelle
Swift 5.1
Machen Sie diese Funktion und generieren Sie zufällige Farben.
z.B
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) }
quelle
Verwenden einer Erweiterung mit einer Inline-Funktion zum Generieren von Zufällen
extension UIColor { static func random() -> UIColor { func random() -> CGFloat { return .random(in:0...1) } return UIColor(red: random(), green: random(), blue: random(), alpha: 1.0) } }
quelle
func anotherGetRandomColor()->UIColor{ let newRed = Double(arc4random_uniform(256))/255.0 let newGreen = Double(arc4random_uniform(256))/255.0 let newBlue = Double(arc4random_uniform(256))/255.0 return UIColor(red: CGFloat(newRed), green: CGFloat(newGreen), blue: CGFloat(newBlue), alpha: 1.0) }
quelle
arc4random_uniform(255)
werden nur Werte von 0 bis 254 angegeben, sodass Sie zu dunkleren Farben tendieren.