다크모드

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

시스템 색 추가

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

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

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

색의 단계

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

  • 텍스트도 마찬가지다.

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

기타

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

참고