Project 03 - UIColor

DaY·2021년 3월 20일
2

iOS

목록 보기
11/52
post-thumbnail

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 값이 나오도록 변환이 필요하다.

이는 쉽게 다음 사이트에서 변환이 가능하다.

https://www.uicolor.io

하지만 코드를 이용해 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 로 변환

0개의 댓글