Dark Mode 대응으로 억제해 두는 곳
디자인으로 억제하는 곳
구현으로 억제하는 곳
이미지를 Dark Mode와 Light Mode로 전환
Assets.xcassets에서 관리하는 이미지의 경우 Appearance를 Any, Dark
로 설정하여 각 슬롯에 이미지를 할당합니다 (Dark Appearance = Dark Mode 용, Any Appearance = 현재 Light Mode 용).

현재 모양 모드(다크 모드 여부) 확인
let appearanceName = NSApplication.shared.effectiveAppearance.name
switch appearanceName {
case .aqua:
print("Light Mode")
label.textColor = NSColor.red
case .darkAqua:
print("Dark Mode")
label.textColor = NSColor.blue
default:
assertionFailure()
}
코드로 전환하는 경우는 외관 모드를 확인한 후 적용합니다.
외관 모드가 변경되었음을 감지
NSView.viewDidChangeEffectiveAppearance()
를 override 합니다.
override func viewDidChangeEffectiveAppearance() {
print(NSApplication.shared.effectiveAppearance.name)
}
macOS 설정 화면에서 [모양 모드]를 변경하면 앱에서의 표시도 전환되는지 확인할 수 있습니다.
소극적인 해결책: 외관 모드를 조명만 지원
NSApplication.shared.appearance = NSAppearance(named: .aqua)
OS에서 Dark Mode로 설정해도 앱은 Light Mode 느낌으로 표시됩니다.
OS가 Dark Mode로 설정되어 있는 경우, 이 코드가 실행되고 나서 화면에 반영될 때까지 일순간 Dark Mode로 표시되어 버리므로, 버그하고 있는 것처럼 보여 버릴지도….
샘플
여기에 위를 시도 할 수있는 샘플 코드를 넣었습니다.
htps : // 기주 b. 코 m / 훗 b19 / 다 rk 모시 mp ぇ 아 p 마코 S
읽어 보면 좋은 자원
let appearanceName = NSApplication.shared.effectiveAppearance.name
switch appearanceName {
case .aqua:
print("Light Mode")
label.textColor = NSColor.red
case .darkAqua:
print("Dark Mode")
label.textColor = NSColor.blue
default:
assertionFailure()
}
override func viewDidChangeEffectiveAppearance() {
print(NSApplication.shared.effectiveAppearance.name)
}
NSApplication.shared.appearance = NSAppearance(named: .aqua)
Reference
이 문제에 관하여(Dark Mode 대응으로 억제해 두는 곳), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/feb19/items/08a9e60f4413905e71ea텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)