반응형
안녕하세요 코찐입니다.
iOS 13 부터 다크모드가 도입되었습니다.
앱 전체를 시스템 설정에 따라 다크모드 적용한다면 별 이슈가 없을 수도 있을 것 같습니다.
하지만 제가 개발 중인 환경에서는 일부만 다크모드를 적용해서 업데이트하기로 했습니다.
그리고 시스템 설정이 아니라 앱 내부 설정에서 다크모드 변경을 제공하는 경우도 있을 겁니다.
그럴 때 유용하게 사용할 수 있는 프로퍼티가 있습니다.
https://developer.apple.com/documentation/uikit/uiview/3238086-overrideuserinterfacestyle
overrideUserInterfaceStyle 인데요.
상위 ViewController나 Windowr가 다크모드로 되어 있더라도,
하위 View만 라이트모드로 설정할 수 있습니다.
주의할 점은 setter를 호출해줘야 한다는 건데요.
커스텀 뷰 안에서 override를 해서 구현하면 아예 호출이 안되는 경우가 있습니다.
override var overrideUserInterfaceStyle: UIUserInterfaceStyle {
return .light
}
이렇게 작성했을 때 상위 ViewController의 설정을 따라가게 됩니다.
그래서 이렇게 직접 setter를 통해서 호출해주면 됩니다.
overrideUserInterfaceStyle = .light
그러면 인터페이스가 설정되는 View의 하위 View들 까지도 적용된다고 합니다.
또 추가적인 팁이 있으면 돌아오겠습니다.
감사합니다!
반응형