Swift: Generate color hash/ UIColor from string / names

anoop m
1 min readJan 18, 2020

--

While you work through apps like Google docs/ sheets, JIRA etc you might have seen that those systems gives you a unique color based on your name, which comes hand sometimes, I have given it a try in iOS and achieved my needs by the below code, there was nice idea from https://medium.com/@pppped/compute-an-arbitrary-color-for-user-avatar-starting-from-his-username-with-javascript-cd0675943b66, I built a bit upon it for Swift. Here is the code, its self explnatory… if you need to hear more check out this video

https://youtu.be/eWRwXcsroSE

import UIKit

func generateColorFor(text: String) -> UIColor{
var hash = 0
let colorConstant = 131
let maxSafeValue = Int.max / colorConstant
for char in text.unicodeScalars{
if hash > maxSafeValue {
hash = hash / colorConstant
}
hash = Int(char.value) + ((hash << 5) - hash)
}
let finalHash = abs(hash) % (256*256*256);
//let color = UIColor(hue:CGFloat(finalHash)/255.0 , saturation: 0.40, brightness: 0.75, alpha: 1.0)
let color = UIColor(red: CGFloat((finalHash & 0xFF0000) >> 16) / 255.0, green: CGFloat((finalHash & 0xFF00) >> 8) / 255.0, blue: CGFloat((finalHash & 0xFF)) / 255.0, alpha: 1.0)
return color
}

var c = generateColorFor(text: "igjgjhgjhgjhgjhgjhgjhgjhgjhgjhgjkjhkhkjhjkhhkh kjkjhkjhkhkuubbjbjkkk")
//
var c1 = generateColorFor(text: "Anna Haro")
var c2 = generateColorFor(text: "Danny Davis ")
var c3 = generateColorFor(text: "Danny David")
var c4 = generateColorFor(text: "Donny")
var c5 = generateColorFor(text: "Donna")
var c6 = generateColorFor(text: "Shawn Mann")

Enjoy….

--

--

No responses yet