redribben icon

UIColor Comparison

redribben | PRO | 10/25/17 08:32:23 PM UTC | 0 ⭐ | 308 👁️ | Never ⏰ | []
Swift |

1.89 KB

|

None

|

0 👍

/

0 👎

import UIKit
 
extension UIColor {
    func rgb() -> [Int] {
        var fRed : CGFloat = 0
        var fGreen : CGFloat = 0
        var fBlue : CGFloat = 0
        var fAlpha: CGFloat = 0
        if self.getRed(&fRed, green: &fGreen, blue: &fBlue, alpha: &fAlpha) {
            let iRed = Int(fRed * 255.0)
            let iGreen = Int(fGreen * 255.0)
            let iBlue = Int(fBlue * 255.0)
            let iAlpha = Int(fAlpha * 255.0)
            
            return [iRed, iGreen, iBlue, iAlpha]
        } else {
            // Could not extract RGBA components:
            return []
        }
    }
}
 
 
extension UserDefaults {
    func color(forKey defaultName: String) -> UIColor? {
        var color: UIColor?
        if let colorData = data(forKey: defaultName) {
            let colorArray = NSKeyedUnarchiver.unarchiveObject(with: colorData) as! [Int]
            color = UIColor(red: CGFloat(colorArray[0])/255, green: CGFloat(colorArray[1])/255, blue: CGFloat(colorArray[2])/255, alpha: CGFloat(colorArray[3])/255)
        }
        return color
    }
    
    func set(_ value: UIColor?, forKey defaultName: String) {
        var colorData: NSData?
        if let colorArray = value?.rgb() {
            colorData = NSKeyedArchiver.archivedData(withRootObject: colorArray) as NSData?
        }
        set(colorData, forKey: defaultName)
    }
}
 
extension UIColor {
    class func paper() -> UIColor {
        return UIColor(red:248/255, green:236/255, blue:194/255, alpha:1.0)
    }
}
 
 
let myObject: UIColor = UIColor.paper()
let objectArray = [UIColor.white, UIColor.lightGray, UIColor.red, UIColor.paper()]
 
//Saving
UserDefaults.standard.set(myObject, forKey: "myKey")
 
//Extracting
let defaultColor : UIColor = UserDefaults.standard.color(forKey: "myKey")!
 
 
let indx : Int = objectArray.index(where: { $0.rgb() == defaultColor.rgb() })!
 
print(indx)

Comments