다크모드의 등장

다크모드

iOS 13 부터는 드디어 다크모드를 지원한다. 다크모드가 가능해짐에 따라 사용자 관점에서는 아주 만족스러우나, 개발자 입장에서는 기존 앱을 수정하거나, 앞으로 개발할 때 신경써야 하는 부분이 생겼다는 점에서 조금 괴로우나 SwiftUI나 Combine 같이 완전 새롭게 배워야하는 부분은 아니다보니 상대적으로 부담은 적다. 각설하고 다크모드에 대해서 알아보자.

시스템 색 추가

이게 핵심이 되는 내용이 아닐까 싶다. 기존에는 고정된 색을 지정해서 썼는데, iOS 13 이후부터는 라이트모드와 다크모드를 오가는 환경이 되기 때문에 사용자가 라이트모드이냐 다크모드이냐에 따라 색이 달라져야만 한다. 그러면 귀찮게시리 다크모드인 사용자를 위해서 색을 따로 설정하고, 라이트모드 사용자를 위해서 또 색을 따로 골라야하는 귀찮은 짓을 해야만 하나? (물론 디자인 가이드에 따라 이렇게 해야만 할 수도 있다…😞) 일단 애플에서 제공하는 시스템 색을 통해서 어떻게 다크모드를 지원하는지 알아보자

자 위 사진에서 label 이라고 써있는 부분에 주목. label은 저게 UILabel 이라는 말이 아니라 UIColor.label 이라는 뜻이다. 즉 label, systemGroupedBackground, systemBlue 색상이 추가됐다. 자 이 색을 쓰게 되면 라이트모드에선 이렇고 다크모드에선 어떻게 변할까?

자 분명 위 사진과 똑같은 값을 썼는데, 다크모드로 변경됨에 따라 색이 자동으로 변경됐다. 그니까 그냥 다크모드에 따라 이런거 저런거 하기 귀찮으면 애플이 제공하는 시스템 색을 쓰면 된다.

색의 단계

다크모드에 따라서 색의 단계도 다양해졌다. 계층에 따라 쓰이는 색도 다크모드에 따라 자동으로 색이 변한다.

텍스트도 마찬가지다.

동영상에선 잘 나왔는데 Presentation Slides를 다운받으니 다크모드에 검정색 배경이 없어졌다… 아무튼 알아서 잘 됨.

기타

이 외에도 아이콘이나 사진도 다크모드, 라이트모드에 따라 다른 사진을 사용할 수 있다. 또 시스템 제공 색 외에도 사용자가 직접 다크모드와 라이트모드에서 쓰일 색을 직접 고를 수 있다. 다크모드가 지원됨에 따라서 추가로 제공되는 API들이 있는데 특정 ViewViewController 에서만 다크모드나 라이트모드를 사용하고 싶거나, 앱 전체에서 다크모드 혹은 라이트모드만 가능하도록 바꿀 수 도 있다. 개인적으로 시간내서 꼭 WWDC 2019 - Implementing Dark Mode on iOS 를 꼭 보길 추천한다.

참고