UI의 Color를 지정하다보면 시스템에서 제공하는 색상 말고 다른 색상을 선택하고 싶을 때가 있을 것이다.
public let red = UIColor.red
위와 같이 시스템이 제공하는 색상을 사용할 수 있지만, 다른 색상을 사용하려면 그 색상의 R, G, B 값을 알아야 한다.
public let customColor = UIColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)
여기서 alpha는 투명도를 말한다.
위의 CGFloat 값은 0부터 1사이의 값을 가진다.
보통 R, G, B는 0부터 255사이의 값을 가지기 때문에 CGFloat 자리에는 (R, G, B 값 / 255) 한 값이 들어간다.
만약, Color 값을 hex 값(#16진수)으로만 안다면 위와 같이 R, G, B 값이 나오도록 변환이 필요하다.
이는 쉽게 다음 사이트에서 변환이 가능하다.
하지만 코드를 이용해 UIColor를 extension(확장)하여 변환하는 것도 가능하다.
import UIKit
public extension UIColor {
convenience init(r: Int, g: Int, b: Int, a: CGFloat) {
self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: a)
}
convenience init(hex: Int) {
self.init(r: (hex & 0xff0000) >> 16, g: (hex & 0xff00) >> 8, b: (hex & 0xff), a: 1)
}
}
UIColor가 R, G, B 값을 받는 기본적인 방법과 hex 값을 받아 색을 변환하는 방법을 제공하도록 확장한다.
public let blue = UIColor(hex: 0x228aae)
'#16진수' 로 제공되는 hex 값을 # -> 0x 로 변환