티스토리 뷰
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
'개발 > iOS' 카테고리의 다른 글
[Swift] Label text 부분적으로 색상 변경하는 방법 (0) | 2019.09.19 |
---|---|
[Swift] iOS http 통신 허용하는 방법 (0) | 2019.09.17 |
[Swift] 네이버 맵(Naver Map) 사용해보기!! (6) | 2019.09.02 |
[Swift] TextField 등이 키보드에 가려지는 현상 (10) | 2019.08.28 |
[Swift] TextField 키보드 return 키 처리하기 (433) | 2019.08.27 |
- Total
- Today
- Yesterday
- Android
- Kakao
- error
- UITextField 멀티라인
- Swift GoogleMap
- 공유하기 한국어
- 키크론K2
- TextField Padding
- ModalPresentaionStyle
- 안드로이드
- firebase
- 문자열나누기
- swift 문자열
- swift fcm
- GIF
- ActivityViewController
- xcode11
- 앱스토어 커넥트
- iOS13
- Xcode
- 애플로그인
- Swift Target Version
- 카카오 로그인
- signinwithapple
- 앱커넥트
- TableView
- presentingViewController
- Sign in with Apple
- ios
- SWIFT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |