Search code examples
iosswiftios-darkmode

How to set default label color based on dark/light mode (in Swift)


I am trying to update my iOS app for dark mode, but am having trouble with setting the dark mode colors in code. Upon editing a UITextView, the color I want the text color to be white in dark mode, and black in light mode (which is default label color), but to my knowledge I do not know how to write this in code, how do I do it?

extension AddCardsVC: UITextViewDelegate {
    func textViewDidBeginEditing(_ textView: UITextView) {
        if #available(iOS 13.0, *) {
            definitionInput.textColor = UIColor.(need default label color)
        } else {
            definitionInput.textColor = UIColor.black
        }
        if(definitionInput.text == "organizing items into familiar, manageable units; often occurs automatically"){
            definitionInput.text = ""
        }
    }

}

Solution

  •    textView.textColor =  UIColor { tc in
                switch tc.userInterfaceStyle {
                case .dark:
                    return UIColor.white
                default:
                    return UIColor.black
                }
            }
    

    This is the easiest way, the UIColor can be passed a closure with traitCollection (TC) and the traitCollection has a property called userInterfaceStyle which tells if the user is using the dark mode, then you just implement switch statement to choose what color you wanna return