iOS 프로그래밍

SwiftUI 다크 모드 지원 : 모드 변경시 색상 자동 변경

하늘흐늘 2022. 10. 18. 22:13
반응형

iOS는 다크 모드를 지원합니다. iOS에서 다크 모드 변경시 iOS에 의하여 앱의 네비게이션 바의 색상이나 기본 글자색 같은 경우는 자동으로 변경됩니다. 하지만 사용자가 직접 설정한 색은 다크 모드에 맞게 변경되지 않습니다. 이런 이유로 자동으로 변경되는 색상과 그렇지 않은 색상의 부조화로 인하여 화면의 가독성이 떨어지거나 화면 색상이 깨진거처럼 보기 좋지 않게 됩니다.

여기서는 다크 모드시 자동으로 색상이 변경하는 방법을 알아보도록 하겠습니다.



위 스크린샷처럼 우선 Asset를 프로젝트에서 선택하여 줍니다.
그 다음으로 서브 메뉴가 나오게 한 뒤에 "New Color Set"을 선택하여 줍니다.
스크린샷의 BackGroundColor와 같이 색상을 선택하면 Any Appearance와 Dark가 나옵니다.
Dark가 다크 모드에서의 색상이며 Any Appearance가 다크 모드 이외의 모드, 일반적인 경우의 색상입니다.
해당 모드를 선택하고 속성창에서 색상을 지정하면 됩니다.
여기서는 일반적인 경우에는 흰색을 다크 모드에서는 검은 색을 지정하였습니다.
그리고 SwiftUI에서 색상을 지정하는 곳에서 아래와 같이 입력하여 주시면 됩니다.

Color("BackGroudColor")

Color의 인자는 Color Set의 이름으로 여기서는 스크린샷에 있는 BackGroundColor를 이용하였습니다.

이렇게하면 다크 모드와 일반 모드가 변경시 해당 모드에 맞게 색상이 선택되어 변경됩니다.

처음에는 코드로 모드를 체크하여 변경하려고 하였습니다. 이렇게하면 앱을 실행하지 않을 때 모드를 변경하고 앱을 실행하여 잘 작동하였습니다. 하지만 앱 사용 중에 모드를 변경하면 색상이 자동으로 변경되지 않고 화면을 갱신해야 색상이 변경되는 문제가 발생하였습니다.
여기서 설명한 방법은 앱 사용 중에 모드가 변경되어도 화면 갱신 없이 색상으로 자동으로 변경됩니다. 

실제로 이 방법은 아래 앱의 업데이트 시에 사용 되었습니다.

 

나만의 프로젝트

개인적으로 하는 프로젝트나 할 일들을 프로젝트로 만들어 진행 상황을 직관적으로 관리하세요! 단순히 할 일 목록으로 관리하는 것보다 전체적인 진행 상황을 파악하고 관리하는데 도움이 될

linkmemo.tistory.com

 

반응형