본문 바로가기
개발 블로그/아이폰개발

iOS13 dark mode(다크모드) 설정시 xcode로 대응 방법

by snapshot 2019. 10. 22.

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번으로 대응을 했고 디자이너와 차차 대응을 해야겠다.

언제 다하냐..

댓글