반응형

SwiftUI 에서 Color 생성할때 Hex 값을 사용해서 생성하는 방법은 다음과 같습니다.

import SwiftUI

extension Color {
    /**
     헥사코드 색상값과 불투명도 값으로 Color 생성
     
     ```
     // How to use
     Color(0x000000, opacity: 0.2) // 검정색 투명도 20%
     ```
     
     - Parameter hex: 헥사코드 값
     - Parameter opacity: 불투명도 (0.0 ~ 1.0) (default = 1.0)
     */
    init(_ hex: Int, opacity: Double = 1.0) {
        let red = Double((hex >> 16) & 0xff) / 255
        let green = Double((hex >> 8) & 0xff) / 255
        let blue = Double((hex >> 0) & 0xff) / 255
        self.init(.sRGB, red: red, green: green, blue: blue, opacity: opacity)
    }
}

참고로 UIKit의 UIColor에서는 다음과 같은 방법을 사용합니다.

extension UIColor {
    /**
     헥사코드 색상값과 알파값으로 UIColor 생성
     
     ```
     // How to use
     UIColor(0x000000, alpha: 0.2) // 검정색 투명도 20%
     ```
     
     - Parameter hex: 헥사코드 값
     - Parameter alpha: 알파값 (0.0 ~ 1.0) (default = 1.0)
     */
    convenience init(_ hex: Int, alpha: CGFloat = 1.0) {
        let components = (
            R: CGFloat((hex >> 16) & 0xff) / 255,
            G: CGFloat((hex >> 08) & 0xff) / 255,
            B: CGFloat((hex >> 00) & 0xff) / 255
        )
        self.init(red: components.R, green: components.G, blue: components.B, alpha: alpha)
    }
}
반응형
Posted by 까칠코더
,