// 카드 뷰 UI 설정
private func setupView() {
// 카드뷰 스타일 설정
self.clipsToBounds = true
self.layer.borderColor = UIColor(named: "CardViewShadowColor")?.cgColor
self.layer.borderWidth = 2
self.layer.cornerRadius = 12
self.backgroundColor = UIColor(named: "CardViewColor")
위 코드에서 backgroundColor 값은 Assets 파일에 분리한대로 동적으로 잘 바뀌었는데 layer.borderColor 값은 동적으로 바뀌지 않았다.
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
}
// 다크/라이트 모드 변경 시 호출되는 메서드
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
// 색상 외형 변경이 있는 경우 업데이트
if self.traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
updateBorderColor()
}
}
// 보더 색상 업데이트 메서드
private func updateBorderColor() {
// 다크 모드와 라이트 모드에 따라 색상 설정
if self.traitCollection.userInterfaceStyle == .dark {
self.layer.borderColor = UIColor(named: "CardViewShadowColor")?.cgColor
} else {
self.layer.borderColor = UIColor(named: "CardViewShadowColor")?.cgColor
}
}
다크 / 화이트 모드 변경이 있을 경우 updateBorderColor() 메서드를 호출하여 self.layer.borderColor 를 바꿔 주었다.