// 1

import UIKit


class UIColorCode: UIColor {

    convenience init(hexString: String) {

        let hex = hexString.stringByTrimmingCharactersInSet(NSCharacterSet.alphanumericCharacterSet().invertedSet)

        var int = UInt32()

        NSScanner(string: hex).scanHexInt(&int)

        let a, r, g, b: UInt32

        switch hex.characters.count {

        case 3: // RGB (12-bit)

            (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)

        case 6: // RGB (24-bit)

            (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)

        case 8: // ARGB (32-bit)

            (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)

        default:

            (a, r, g, b) = (1, 1, 1, 0)

        }

        self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255)

    }

}


//2

class func hexStringToUIColor (hex:String) -> UIColor {

        var cString:String = hex.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet() as NSCharacterSet).uppercaseString

        

        if (cString.hasPrefix("#")) {

            cString = cString.substringFromIndex(cString.startIndex.advancedBy(1))

        }

        

        if ((cString.characters.count) != 6) {

            return UIColor.grayColor()

        }

        

        var rgbValue:UInt32 = 0

        NSScanner(string: cString).scanHexInt(&rgbValue)

        

        return UIColor(

            red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,

            green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,

            blue: CGFloat(rgbValue & 0x0000FF) / 255.0,

            alpha: CGFloat(1.0)

        )

    }

+ Recent posts