39 lines
867 B
Swift
39 lines
867 B
Swift
//
|
|
// StringExtensions.swift
|
|
// lottie-swift
|
|
//
|
|
// Created by Brandon Withrow on 1/25/19.
|
|
//
|
|
|
|
import CoreGraphics
|
|
import Foundation
|
|
|
|
extension String {
|
|
|
|
var cgColor: CGColor {
|
|
let (red, green, blue) = hexColorComponents()
|
|
return .rgb(red, green, blue)
|
|
}
|
|
|
|
func hexColorComponents() -> (red: CGFloat, green: CGFloat, blue: CGFloat) {
|
|
var cString: String = trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
|
|
|
|
if cString.hasPrefix("#") {
|
|
cString.remove(at: cString.startIndex)
|
|
}
|
|
|
|
if (cString.count) != 6 {
|
|
return (red: 0, green: 0, blue: 0)
|
|
}
|
|
|
|
var rgbValue: UInt64 = 0
|
|
Scanner(string: cString).scanHexInt64(&rgbValue)
|
|
|
|
return (
|
|
red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
|
|
green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
|
|
blue: CGFloat(rgbValue & 0x0000FF) / 255.0)
|
|
}
|
|
|
|
}
|