πŸ’» Programming 개발/🍎 iOS 개발, Swift

[Swift] μ‚¬μš©μž μ»¬λŸ¬μ…‹ μΆ”κ°€ν•˜κ³  UI Color ν™•μž₯ν•˜μ—¬ μ½”λ“œλ‘œ μ ‘κ·Όν•˜κ²Œ λ§Œλ“€κΈ°

kimdee 2022. 4. 4. 12:56
λ°˜μ‘ν˜•

 

 

μ•± μŠ€νƒ€μΌμ— 따라 μ „λ°˜μ μœΌλ‘œ λ°˜λ³΅λ˜μ–΄ μ‚¬μš©ν•˜λŠ” 컬러λ₯Ό Assets에 μΆ”κ°€ν•˜λ©΄, μΈν„°νŽ˜μ΄μŠ€ λΉŒλ”μ— 색상이 μΆ”κ°€λ˜μ–΄ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ꡬ성할 μ‹œμ— κ°„νŽΈν•˜κ²Œ 색을 μΆ”κ°€ν•˜κ³  관리할 수 μžˆμŠ΅λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ—μ„œλŠ” 색상을 Assets 에 μΆ”κ°€ν•˜κ³ , μΈν„°νŽ˜μ΄μŠ€ λΉŒλ”λ‘œ μ‚¬μš©ν•΄λ³΄λ©°, UIColorλ₯Ό extension ν™•μž₯ν•˜μ—¬ μ½”λ“œ μ˜μ—­μœΌλ‘œλ„ μ ‘κ·Όν•  수 μžˆλ„λ‘ ν•˜λŠ” 방법을 λ‹€λ£Ήλ‹ˆλ‹€. 

 

 

Assets/ 에 μΆ”κ°€ν•˜κΈ° 

Xcode μ’ŒμΈ‘μ— μžˆλŠ” Project Navigaterμ—μ„œ Assets.xcassets 에 λ“€μ–΄κ°„ ν›„ 폴더 Colors λ₯Ό λ§Œλ“€μ–΄μ€λ‹ˆλ‹€. ν•΄λ‹Ή 폴더 μ•ˆμ— 마우슀 였λ₯Έμͺ½ λ²„νŠΌμ„ 눌러 [New Color Set]을 λˆŒλŸ¬μ€λ‹ˆλ‹€.

 

μ›ν•˜λŠ” 컬러의 이름을 μ§€μ •ν•˜λ©΄  μ•„λž˜μ™€ 같이 컬러칩이 λœΉλ‹ˆλ‹€. ν•΄λ‹Ή μ»¬λŸ¬μ…‹μ˜ Attribute Inspector μ˜μ—­μ—μ„œ 인풋 방법을 μ„ νƒν•˜μ—¬ 색상을 μž…λ ₯ν•΄μ€λ‹ˆλ‹€. μ—¬κΈ°μ„œ Any Appearance, Dark λ‘κ°œκ°€ λœ¨λŠ”λ°, Dark 색상을 λ”°λ‘œ 지정할 경우, 라이트λͺ¨λ“œμ—μ„œ λ³΄μ΄λŠ” ν•΄λ‹Ή 색깔 μ˜μ—­μ΄ μ§€μ •ν•œ μƒ‰μƒμœΌλ‘œ λ³΄μ΄λ‹ˆ, 닀크λͺ¨λ“œκ°€ λ”°λ‘œ λ””μžμΈ λ˜μ–΄μžˆλ‹€λ©΄ ν•΄λ‹Ή 뢀뢄을 μ°Έκ³ ν•˜μ—¬ μ»¬λŸ¬μΉ©μ„ μ§€μ •ν•˜λŠ” 것이 μ’‹κ² μŠ΅λ‹ˆλ‹€.

 

λ§Œμ•½, 닀크λͺ¨λ“œλ₯Ό λ”°λ‘œ λ§Œλ“€μ§€ μ•Šκ±°λ‚˜ 색상이 λ™μΌν•˜λ‹€λ©΄, λ‘κ°œμ˜ μ»¬λŸ¬μΉ©μ„ μ•„λž˜μ™€ 같이 [Shift]ν‚€λ₯Ό 눌럳 λ™μ‹œ μ„ νƒν•œ ν›„ 색상을 μ§€μ •ν•˜λ©΄ λ©λ‹ˆλ‹€.

 

μ—¬κΈ°μ„œ 8-bit (0~255)λͺ¨λ“œμ˜ 경우, 각 RGB값을 0~255κ°’ λ‚΄μ™Έλ‘œ μ§€μ •ν•˜λŠ” 방식이며, 8-bit Hexadecimal은 16μ§„μˆ˜ ν˜•νƒœμ˜ 색상 ν‘œκΈ°λ²•μ„ μ˜λ―Έν•©λ‹ˆλ‹€. 

8λΉ„νŠΈ 16μ§„μˆ˜ λ°©μ‹μ˜ μƒ‰μƒν‘œκΈ°λ²•

μ—¬κΈ°μ„œ κ°€μž₯ ν•˜λ‹¨μ— μžˆλŠ”  [Show Color Panel]을 μ„ νƒν•˜μ—¬ 직접 μƒ‰μƒν‘œλ₯Ό 눈으둜 보고 선택할 수 μžˆμŠ΅λ‹ˆλ‹€. 

μ›ν•˜λŠ” Color Set을 폴더 μ•ˆμ— 정리해두면 μ•„λž˜μ™€ 같이,  ν•΄λ‹Ή ν΄λ”μ•ˆμ—μ„œ Color Sets을 ν•œ λˆˆμ— λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 

 

μΈν„°νŽ˜μ΄μŠ€ λΉŒλ”μ—μ„œ 직접 μΆ”κ°€ν•œ 색상을 μ‚¬μš©ν•˜κΈ°

예λ₯Ό λ“€μ–΄, UILabel의 색상을 λ³€κ²½ν•˜κ³ μž ν•œλ‹€λ©΄ ν•΄λ‹Ή λ ˆμ΄λΈ”μ„ 클릭 ν›„ Attribute Inspectorμ—μ„œ Tint 탭을 λˆ„λ₯΄λ©΄ Named Colors μ•„λž˜μ— μ•„κΉŒ 직접 μ§€μ •ν•œ 색상듀을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. ν΄λ¦­ν•΄μ„œ 지정해주면 λ©λ‹ˆλ‹€. μ—¬κΈ°μ„œ iPhone SDK μ»¬λŸ¬λŠ” μ‹œμŠ€ν…œμ—μ„œ 기본적으둜 μ œκ³΅ν•΄μ£ΌλŠ” μ»¬λŸ¬μ…‹μž…λ‹ˆλ‹€.

 

 

 

 

μ½”λ“œ μ˜μ—­μ—μ„œ 색상 μ ‘κ·Όν•˜κΈ°

λ§Œμ•½ μ½”λ“œ μ˜μ—­μ—μ„œ λ²„νŠΌ, λ ˆμ΄λΈ” λ“±μ˜ 색상을 μ§€μ •ν•˜κ³  μ‹Άλ‹€λ©΄ UIColor의 named λ₯Ό 톡해 지정해둔 색상λͺ…을 λ¬Έμžμ—΄λ‘œ 전달해주면 λ©λ‹ˆλ‹€. 

self.myButton.backgroundColor = UIColor(named: "kakaotalkColor")

  

λ§Œμ•½ UIColor의 λ©€λ²„λ³€μˆ˜λ‘œ extension ν™•μž₯ν•˜μ—¬ μ„ μ–Έν•˜μ˜€λ‹€λ©΄ μ•„λž˜μ™€ 같이 μ½”λ“œμ—μ„œ  μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

self.myButton.backgroundColor = UIColor.kakaotalkColor
// λ˜λŠ” μ•„λž˜μ²˜λŸΌ μ“Έ 수 μžˆλ‹€.
self.myButton.backgroundColor = .kakaotalkColor

 

ν•΄λ‹Ή ν”„λ‘œμ νŠΈ 폴더 λ‚΄μ˜ UIColor+Extensionμ΄λΌλŠ” μ΄λ¦„μœΌλ‘œ λ”°λ‘œ Swift νŒŒμΌμ„ λ§Œλ“€μ–΄μ„œ μ•„λž˜μ²˜λŸΌ μ½”λ“œλ₯Ό 선언해두면 μœ„μ™€ 같이 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

// UIColor+Extension.swift

// 1. λ§Œμ•½ Assets 폴더에 μ»¬λŸ¬μ…‹μ„ μ§€μ •ν•˜μ˜€λ‹€λ©΄
extension UIColor {
    static let myCustomColor = UIColor(named: "myCustomColor")
}

// 2. μ½”λ“œλ‘œλ§Œ 색상을 μΆ”κ°€ν•  경우
// 2-1. Floating point둜 색상 지정
extension UIColor {
    static let myCustomColor = UIColor(
    	red: 0.776,
        green: 0.812,
        blue: 0.334
        alpha: 1.0
    )
}

// 2-2. 8-bit Hexadecimal 둜 색상 지정
// μ•ŒνŒŒκ°’μ΄ 없을 경우 0xμ΄ν•˜ λ‘μžλ¦¬λ₯Ό 빼도 λœλ‹€. 
extension UIColor {
    static let myCustomColor = UIColor(
    	argb: 0xFFFFFFFF
    )
}

 

 

참고링크

https://developer.apple.com/documentation/uikit/uicolor

 

Apple Developer Documentation

 

developer.apple.com

 

Type 'UIColor?' has no member ".myCustomColor" Swift 5.0

I have all my colors in a dedicated color asset. This allows me to define named constants that supports "Any Appearance" and "Dark Appearance". Existing color assets works (previously defined), but...

stackoverflow.com

 

 

How to use hex color values

I am trying to use hex color values in Swift, instead of the few standard ones that UIColor allows you to use, but I have no idea how to do it. Example: how would I use #ffffff as a color?

stackoverflow.com


마치며 

 

μ˜€λŠ˜λ„ μ½μ–΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

 

κΆκΈˆν•œ 점이 μžˆλ‹€λ©΄ λŒ“κΈ€λ‘œ, 도움이 λ˜μ…¨λ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.

ν˜Ήμ‹œ μˆ˜μ •ν•˜κ±°λ‚˜ ν”Όλ“œλ°±ν•˜μ‹€  λ‚΄μš© μžˆλ‹€λ©΄ μ–Έμ œλ“  λŒ“κΈ€λ‘œ λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.

 

κ°μ‚¬ν•©λ‹ˆλ‹€.

 

 

λ°˜μ‘ν˜•