일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- PyQt
- cocoapods
- alamofire
- ios
- UITableView
- 그래프
- Chart
- Android
- Chrats
- PyQt5
- Apple
- UIButton
- ui
- TableView
- Xcode
- Storyboard
- androidstudio
- button
- 어플리케이션
- charts
- graph
- library
- 라이브러리
- Python
- UIKit
- 개발
- kotlin
- Swift
- 개발자
- modal
Archives
- Today
- Total
Jiwift
[iOS/Swift] cgColor 다크 모드, 라이트 모드가 적용되지 않을 때 cgColor Switching in iOS DarkMode 본문
iOS Dev/iOS
[iOS/Swift] cgColor 다크 모드, 라이트 모드가 적용되지 않을 때 cgColor Switching in iOS DarkMode
지위프트 2023. 9. 3. 01:29반응형
Xcode에서 UIColor 에셋 설정을 완료하고 다크모드와 라이트모드를 적용을 했으나를 사용하는 다크모드 혹은 라이트모드가 반영되지 않는 겨우가 있습니다. 분명 화면 모드를 변경했고 다른 애들은 다 바뀌었는데, 특정 누군가가 바뀌지 않는 경우를 저는 경험했습니다.
첫 번째로 확인해야하는 곳은 UIColor 에셋입니다. 여기도 문제가 없이 제대로 해두었다면, UIColor를 cgColor로 사용했는지 확인을 해야합니다.
self.textFieldBoxView.layer.borderColor = UIColor(named: "surface200-Dark1")?.cgColor
위와 같이 UIColor를 cgColor로 적용하고있는 경우 변경이 적용되지 않습니다. 이유로는 cgColor가 다이나믹 컬러를 지원하지 않는다고 하는데요.
그래서 화면 모드가 변환되는 상황에 색을 다시 한번 적용해주면 현재 화면 모드 상태에 따라서 색상이 적용되어 다크모드가 대응을 할 수 있습니다. 아래는 변화를 감지하는 코드입니다.
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
if previousTraitCollection != nil {
// cgColor 색상 다시 적용
self.textFieldBoxView.layer.borderColor = UIColor(named: "surface200-Dark1")?.cgColor
}
}
이때 에셋을 라이트 모드와 다크모드를 제대로 설정했다면 굳이 색상을 바꾸지 않고 하나의 에셋으로 계속 사용해도됩니다.
반응형
'iOS Dev > iOS' 카테고리의 다른 글
iOS 앱 배포 과정 - 개발자 센터 App 생성하기, 앱스토어 (0) | 2023.10.10 |
---|---|
iOS 앱 배포 과정 - 개발자 센터 App ID 등록하기, 앱스토어 (2) | 2023.10.10 |
[iOS/Swift] isSecureTextEntry : TextField를 사용한 스크린 캡처 방지, 화면 스크린샷 막는 방법, 녹화 방지 (2) | 2023.07.02 |
[iOS/Swift] UserDefaults 초기화, 리셋, 데이터 삭제 (2) | 2023.01.11 |
[iOS/Swift] UserDefaults 사용법 저장하고 불러오기 간단한 데이터 저장, String, Int, Bool, Array (0) | 2023.01.08 |