Skip to content

Instantly share code, notes, and snippets.

@grhowes
Created April 6, 2016 12:28
Show Gist options
  • Save grhowes/39886e56785a02d543097bc8534a0322 to your computer and use it in GitHub Desktop.
Save grhowes/39886e56785a02d543097bc8534a0322 to your computer and use it in GitHub Desktop.
A UIColor extension that uses hashing to make a unique color to a string
//
// UIColor+GH.swift
// Signal GH
//
// Created by Glenn Howes on 1/15/16.
// Copyright © 2016 Generally Helpful Software. All rights reserved.
//
import UIKit
import Colours
@objc class ColorPair: NSObject
{
let mainColor: UIColor
let highlightColor: UIColor
init(mainColor: UIColor, highlightColor: UIColor)
{
self.mainColor = mainColor
self.highlightColor = highlightColor
}
}
var sGoodColors:[UIColor]?
extension UIColor
{
class func goodColors()-> [UIColor]
{
if sGoodColors == nil
{
sGoodColors = [UIColor.infoBlueColor(), UIColor.successColor(), UIColor.warningColor(),
UIColor.moneyGreenColor(), UIColor.limeColor(), UIColor.cardTableColor(),
//UIColor.salmonColor(),
//UIColor.brickRedColor(), UIColor.grapefruitColor(), UIColor.pinkColor(),
UIColor.indianRedColor(), UIColor.strawberryColor(), UIColor.maroonColor(),
// UIColor.watermelonColor(), UIColor.tomatoColor(), UIColor.crimsonColor(),
UIColor.dangerColor(), UIColor.black25PercentColor(), UIColor.tealColor(),
UIColor.steelBlueColor(), UIColor.robinEggColor(), UIColor.pastelBlueColor(),
UIColor.turquoiseColor(), UIColor.skyBlueColor(), UIColor.indigoColor(),
UIColor.denimColor(), UIColor.blueberryColor(), UIColor.cornflowerColor(),
UIColor.midnightBlueColor(), UIColor.fadedBlueColor(), UIColor.waveColor(),
UIColor.emeraldColor(), UIColor.grassColor(), UIColor.seafoamColor(), UIColor.cactusGreenColor(),
//UIColor.chartreuseColor(),
UIColor.hollyGreenColor(), UIColor.oliveColor(),
UIColor.eggplantColor(), UIColor.pastelPurpleColor(), UIColor.coolPurpleColor(),
UIColor.plumColor(), UIColor.raspberryColor(), UIColor.fuschiaColor(), UIColor.grapeColor(),
UIColor.periwinkleColor(), UIColor.orchidColor(), UIColor.goldenrodColor(), UIColor.mustardColor(),
UIColor.goldColor(), UIColor.peachColor(), UIColor.burntOrangeColor(),
UIColor.cantaloupeColor(), UIColor.carrotColor(), UIColor.mandarinColor(), UIColor.chiliPowderColor()
]
}
return sGoodColors!
}
class func colorSchemeForName(name: String)->ColorPair
{
let myColors = goodColors()
let maxColor = myColors.count
let hash = abs(name.hash)
let index = hash % maxColor
let mainColor = myColors[index]
let highlightColor = mainColor.blackOrWhiteContrastingColor()
return ColorPair(mainColor: mainColor, highlightColor: highlightColor)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment