How to support Dark Mode in iOS apps
이번 iOS 13에서 dark mode 가 추가 되었다. 아.......
뭐 미리 준비를 했으면 됐지만 준비 안 했다..
일단 다크 모드 막는 법 부터 알아 보자.
1) info 파일 안에 User Interface Style 을 추가를 한다.
Type은 String , value는 Light 적으면 끝..간단함..그리고 모두에게 비밀로 하고 편히 걱정없이 일을 한다.
2) 각각의 뷰컨트롤러에 세팅을 한다.
self.overrideUserInterfaceStyle = .light 로 각 뷰컨틀로러에 넣어주면 된다. 귀찮다..이건..1번이 제일 좋다.
override func viewDidLoad() {
super.viewDidLoad()
self.overrideUserInterfaceStyle = .light
// Do any additional setup after loading the view.
}
3) "뭐 dark mode 모두 대응해주겠다" 라는 분이 계시다면 이 방법을 추천한다.
Asset Catalog를 추가한다. 그리고 알아서 이름을 변경한다.
)
캡쳐한 화면대로 따라하면 된다.
일단 Asset 의 이름을 정하고 1번 → 2번을 눌러서 생성을 한다.
그리고 3번의 이름을 정하고 4번을 클릭하면 none, (Any, Dark), (Any, Light, Dark) 이렇게 세 분류가 나온다. 클릭 해보면 어떻게 되는지 알게 될 것이다.
나는 일단 가운데 Any, Dark를 클릭해서 두 가지의 경우를 만들었다. 그리고 각각의 기본과 dark 모드를 설정했다.
4) UIColor Extension
컬라를 선택하면 Named color에 등록된 컬러가 나와서 설정해주면 된다.
그리고 코드로 등록된 컬러를 사용하고 싶으면 UIColor extension으로 UIColor(named: "") 이걸 통해서 등록해주면 된다.
import Foundation
import UIKit
public extension UIColor {
static let C_blue = UIColor(named: "C_blue")
static let C_blue_only = UIColor(named: "C_blue_only")
static let C_white = UIColor(named: "C_white")
static let C_red = UIColor(named: "C_red")
}
코딩으로 적용을 했을 때는
@IBOutlet weak var testView : UIView!
override func viewDidLoad() {
super.viewDidLoad()
self.testView.backgroundColor = UIColor.C_red
// Do any additional setup after loading the view.
}
끝..
런타임때 이런식으로 유저가 변경하면 알아서 색을 바꿔준다.
저는 일단 대응을 미리 못한 잘못이 있기 때문에 1번으로 대응을 했고 디자이너와 차차 대응을 해야겠다.
언제 다하냐..
'개발 블로그 > 아이폰개발' 카테고리의 다른 글
[iOS 앱 내 구입] iOS 앱 내 결제 시스템을 구현하면서 필수 고려할 사항 정리 (2) | 2019.12.04 |
---|---|
[iOS] App Lifecycle( 앱 생명주기) (0) | 2019.11.27 |
[iOS DateFormatter Locale] Date->String Locale identifier 사용표 (0) | 2019.11.21 |
[swift Date, DateFormatter] Date->String , String->Date 일때 locale(identifier), TimeZone(abbreviation) 관계 (0) | 2019.11.21 |
[Swift Date] 예약과 유저에게 보여줘야 할 DateFormatter TimeZone 설정 (0) | 2019.11.20 |
[Objectvie-c 의 블록] objectvie c 블록[block] 2장 메모리 영역 (0) | 2019.11.08 |
[Objectvie-c 의 블록] objectvie c 블록[block] 1장. (0) | 2019.11.08 |
frame 과 bounds 차이라면..? Swift, Xcode, iOS 개발 (0) | 2019.10.30 |
델리게이트(Delegate) 위임 패턴이란? (0) | 2019.10.23 |
ARC, 순환참조와 소유권 지시어 (iOS, xcode) (0) | 2019.10.22 |
댓글