Es gibt viel zu viele Benutzer-IDs, um eine eindeutige Farbe für jede mögliche Benutzer-ID zu erhalten. Ihre beste Option wäre es, eine Möglichkeit zu finden, jede Benutzer-ID auf eine der möglichen verfügbaren Farben einzugrenzen und die Tatsache zu akzeptieren, dass zwei Benutzer die gleiche Farbe haben.
Eine mögliche Lösung wäre, die hashValue
der Benutzer-ID-Zeichenfolge zu erhalten und dann Int
auf eine der möglichen 16.777.216 Farben zu reduzieren.
let userId = "XzSYoKJaqKYREkdB2dgwt0fLOPP2" // or whatever the id is
let hash = abs(userId.hashValue)
let colorNum = hash % (256*256*256)
An diesem Punkt colorNum
ist der Bereich 0
-0xFFFFFF
Sie können nun eine Farbe aus colorNum
erstellen.
let red = colorNum >> 16
let green = (colorNum & 0x00FF00) >> 8
let blue = (colorNum & 0x0000FF)
let userColor = UIColor(red: CGFloat(red)/255.0, green: CGFloat(green)/255.0, blue: CGFloat(blue)/255.0, alpha: 1.0)
Sie diese Farbe in dem Profil des Benutzers gespeichert werden sollen, da die hashValue
nicht gleich jedes Mal läuft die App sein garantiert.
Sind alle Benutzer-IDs sehr unterschiedlich? – kennytm
Sie möchten eine zufällige Farbe für jeden generierten Benutzer Ids string? – Danyl
Alle IDs haben das Format wie oben (firebase user.uid). Ich würde gerne eine einzigartige Farbe (wenn möglich) aus diesen Saiten erstellen. –