UIColorを使うときに加算、減算などできたら良いなと思うときがあったので、演算子を定義しました。
次は明度や彩度を変更するような関数も作れたらと思ってます。
他にもこんなのあれば便利だよというものがあれば教えて下さい!
UIColorHelpers
func + (left: UIColor, right: UIColor) -> UIColor {
var leftRGB = left.getRGB()
var rightRGB = right.getRGB()
return UIColor(red: leftRGB.red + rightRGB.red, green: leftRGB.green + rightRGB.green, blue: leftRGB.blue + rightRGB.blue, alpha: leftRGB.alpha + rightRGB.alpha)
}
func - (left: UIColor, right: UIColor) -> UIColor {
var leftRGB = left.getRGB()
var rightRGB = right.getRGB()
return UIColor(red: leftRGB.red - rightRGB.red, green: leftRGB.green - rightRGB.green, blue: leftRGB.blue - rightRGB.blue, alpha: leftRGB.alpha - rightRGB.alpha)
}
func * (left: UIColor, right: CGFloat) -> UIColor {
var leftRGB = left.getRGB()
return UIColor(red: leftRGB.red * right, green: leftRGB.green * right, blue: leftRGB.blue * right, alpha: leftRGB.alpha * right)
}
// 捕色を返す
// - 使い方 -
// let yellow = UIColor.yellowColor()
// let blue = -yellow
prefix func - (color: UIColor) -> UIColor {
let rgb = color.getRGB()
let minVal = min(rgb.red, rgb.green, rgb.blue)
let maxVal = max(rgb.red, rgb.green, rgb.blue)
return UIColor(red: minVal + maxVal - rgb.red, green: minVal + maxVal - rgb.green, blue: minVal + maxVal - rgb.blue, alpha: rgb.alpha)
}
extension UIColor
{
func getRGB() -> (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {
var result = (red: CGFloat(0.0), green: CGFloat(0.0), blue: CGFloat(0.0), alpha: CGFloat(0.0))
self.getRed(&result.red, green: &result.green, blue: &result.blue, alpha: &result.alpha)
return result
}
}