티스토리 뷰

다크모드를 이용하는 방법은 여러가지가 있지만, 본인의 app target이 13.0 이상을 지원하고 있다면 Asset에서 image set을 다크, 라이트 모드에 따라 지원해주면 쉽게 해결 가능합니다.

필자의 경우도 13.0 이상의 앱을 개발중이기에 위와 같은 방법으로 상당 부분 해결하였지만, 문제는 해당 문제를 코드로 구현한 부분에서는 시스템 자체 모드 변경에 맞게 다크 모드로 바로 변경이 되지 않더군요.

해당 문제는

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
        super.traitCollectionDidChange(previousTraitCollection)
        
        changeColor(type: textBolder) // 이 자리에 본인이 원하는 메소드 입력
    }

traitCollectionDidChange를 override 해줌으로서 해결이 가능했습니다.

    func changeColor(type: UIImageView) {
        if traitCollection.userInterfaceStyle == .dark {
            type.layer.borderColor = #colorLiteral(red: 0.07449612767, green: 0.07451748103, blue: 0.07449635118, alpha: 1).cgColor
        } else {
            type.layer.borderColor = #colorLiteral(red: 0.9489133954, green: 0.9490793347, blue: 0.948915422, alpha: 1).cgColor
        }
    }

저는 간단히 if문을 활용하여 시스템 모드가 변경될 시에 색깔을 어떻게 변경할지에 대해 함수로 표현하여 해당 문제를 해결하였습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함