본격적인 프로젝트 시작 전
프로젝트에서 쓰일 색상들을 추가했으면 좋겠다는
팀장님의 말씀에 작업을 했습니다
enum이나 extension등의 방법도 있지만
우리 팀은 Assets에 추가하는 방법을 쓰기로 했습니다!
3가지 방법을 비교하는 포스팅도 언젠가는..
Assets에 색상들을 추가하기전에 종류도 많고
다른 이미지들도 있고하니 혼란스러울거 같아서 따로 Color 폴더를 만들려고했다.
그런데 폴더 종류가 2개가 있는것이다?
Folder
와 Folder with Namespace
가 있는것이다.
둘이 무슨 차이점이 있을까 하는 마음에 포스팅을 시작했다
일단 둘 다 생성해봤다
Folder1이 일반 Folder
고
Folder2이 Folder with Namespace
로 생성한 것이다.
일단 눈에 띄는 차이점은 색상밖에 없는것 같다
회색과 파란색으로 나뉜다.
인스펙터 창을 키고 클릭해보면 차이점을 알 수 있는데
Provides Namespace
속성이 해제되어있다
Folder2는 이부분이 체크되어있다.
Folder1에서 해당 속성을 체크하니 Folder2처럼 파란색으로 변경되었다
폴더의 색상은 해당 속성의 유무에 따라 결정되는것같다
그럼 이제 Namespace가 뭔지 알아보자
네임스페이스(namespace)는 프로그래밍에서 이름 충돌을 방지하고 코드의 가독성과 유지 보수성을 높이기 위해 사용되는 개념입니다. 네임스페이스는 변수, 함수, 클래스 등의 이름을 그룹화하여 논리적 범위를 제공하며, 동일한 이름을 가진 요소들이 다른 네임스페이스에 존재할 수 있게 합니다.
기본적인 개념은 이렇다고 한다.
그러니까 동일한 이름을 가진 요소들이 있을 수 있는데 이것의 충돌을 방지하고
사용자가 헷갈리지 않고 사용할 수 있도록 해주는것같다.
사용법은 이번 상황에 대입하여 설명해보겠다.
현재 Assets에는 같은 이름의 Color1이 각각의 폴더에 포함되어 있고
다른 색을 가지고 있다.
cell.textLabel?.text = "알람"
cell.textLabel?.textColor = UIColor(named: "Color1")
이런식으로 작성한다면 무슨색이 나타날까?
정답은 Folder1의 Color1이 나타난다.
그럼 Folder2에 있는 Color1은 평생 못 쓰는걸까?
아래에 쓰는 방법이 있다
cell.textLabel?.text = "알람"
cell.textLabel?.textColor = UIColor(named: "Folder2/Color1")
이 처럼 작성하면 우리가 원하는 색상으로 변경된 것을 확인해 볼 수 있다.
폴더의 주소또한 포함하여 정하는 것으로 같은 이름을 가진 다른 요소들을 활용할 수 있게된다.
결국 Folder with Namespace
라는 것은
폴더를 생성하는 시점에서 Namespace속성을 자동적으로 가지게 하는것이다.
그리고 이를 통해 같은 이름을 가진 요소들이 있을경우, 혹은 여러개의 속성들을 다룰경우 헷갈리지 않고 사용할 수 있도록 도와줄 것이다