iOS 컬러테마 구현방법


color 설정하는 방법

StatusBar

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .default
}
  
override var prefersStatusBarHidden: Bool {
    return true
}

override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
    return .fade
}

NotificationCenter.default.addObserver(self,
    selector: #selector(colorThemeChanged),
    name: NSNotification.Name(rawValue: "COLOR_THEME_CHANGED"),
    object: nil)

NotificationCenter.default.post(name: NSNotification.Name(rawValue: "COLOR_THEME_CHANGED"), object: nil)

func setColors() {
    self.view.backgroundColor = ThemeManager.o.colorOf("Theme_backgroundColor")
        
    // 네비게이션바의 배경색 설정
    self.navigationController?.navigationBar.barTintColor = ThemeManager.o.colorOf("NavigationBar_barTintColor")
    self.navigationController?.navigationBar.isTranslucent = false
    self.navigationController?.navigationBar.tintColor = ThemeManager.o.colorOf("NavigationBar_tintColor")
    self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: ThemeManager.o.colorOf("NavigationBar_titleColor")]
        
    self.navigationItem.rightBarButtonItem?.tintColor = ThemeManager.o.colorOf("NavigationBar_ButtonItemTintColor")
}

// MARK: - Notification Handler
@objc func colorThemeChanged() {
    print("HomeVC \(#function)")
    setColors()

    if ThemeManager.o.currentThemeName == "Theme1" {
        //self.statusBarStyle = .lightContent
        self.navigationController?.navigationBar.barStyle = .black
    }
    else {
        //self.statusBarStyle = .darkContent
        self.navigationController?.navigationBar.barStyle = .default
    }
    //self.setNeedsStatusBarAppearanceUpdate() 
}
,

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다