티스토리 뷰

개발/iOS

[Swift] Extension UIColor 사용하기!!

DeveloperFury 2019. 9. 4. 13:56
Extension UIColor 사용하기

 

Record

 작성일

2019. 09. 04 (수)

Swift 버전

Swift 5

Xcode 버전

10.3


안녕하세요.
Fury입니다 :]

 

프로젝트를 하다가 색깔을 정할 일이 많은데

RGB 값을 외우는 것보다는

자주 사용하는 메인 컬러들을

지정해놓으면 좋겠다 라는 생각이 있었어요.

 

그래서!!

Extension을 공부해봤습니다.

 

 1. Extension UIColor

 

익스텐션을 이용해 클래스, 구조체, 열거형 혹은 프로토콜 타입에 기능을 추가할 수 있습니다.

retroactive modeling으로 알려진 것과 같이 원본 코드를 몰라도

그 타입에 대한 기능을 확장할 수 있습니다.

 

익스텐션은 Objective-C의 카테고리와 유사합니다.

Swift에서 익스텐션을 이용해 다음을 할 수 있습니다.

 

  • 계산된 인스턴스 프로퍼티와 계산된 타입 프로퍼티의 추가

  • 인스턴스 메소드와 타입 메소드의 추가

  • 새로운 이니셜라이저 제공

  • 서브스크립트 정의

  • 중첩 타입의 선언과 사용

  • 특정 프로토콜을 따르는 타입 만들기

NOTE 익스텐션은 타입에 새 기능을 추가할 수 있지만 오버라이드는(override)는 할 수 없습니다.

 

그러면 Extension을 이용해서 어떻게 UIColor를 사용하느냐??

 

 

위 코드는

제가 Megabox 앱을 클론 할 때 만든 UIColor Extension이에요.

 

enum-case로 색상명을 정의하고

UIColor의 appColor라는 static 함수를 구현했어요.

그리고 파마리터로 위에 정의한 enum을 받고요.

 

그리고 UIColor Type을 반환하는 함수이므로

각 case에 return 값을 UIColor로 주는 거죠!!

 

그러면 사용방법은??

 

 

"UIColor.appColor(.defaultGrayColor)"를 보면 되는데

UIColor의 extension으로 만든 static 함수를 사용할 수 있어요.

 

그리고 점(.)을 찍어보면?

맞습니다.

전달 인자(argument) 값으로 enum case에 있는 값을 선택하면 됩니다.

 

끝이에요~ㅎㅎ

 

 

[extension 설명 참고 사이트]

https://jusung.gitbook.io/the-swift-language-guide/language-guide/20-extensions

 

 

댓글