iOS에서는 날짜와 시간을 입력하기 하기 위해 UIDatePicker를 사용합니다. UIDatePicker를 적용하면 iOS 13까지는 기본적으로 다음과 같이 wheel 모양의 선택 UI를 볼 수 있었습니다.
아울렛변수를 통해 설정을 하면 다음과 같이 전체 날짜의 색상과 오늘 날짜의 색상을 서로 다르게 조절도 가능합니다.
@IBOutlet weak var datePicker: UIDatePicker!
datePicker.setValue(UIColor.white, forKeyPath: "textColor")
datePicker.setValue(true, forKeyPath: "highlightsToday")
문제: xcode12 이후 버전에서 iOS14 이후 버전을 빌드하고, UIDatePicker가 있는 화면으로 이동하면 다음과 같은 오류를 뿜으며 앱이 종료되는 오류가 발생했습니다.
NSInvalidArgumentException', reason: '-[_UIDatePickerIOSCompactView setHighlightsToday:]
원인: 이러한 문제가 발생한건 iOS14 이후 버전의 UIDatePicker 기본 모양이 다음과 같이 변경되었기 때문입니다.
위 화면처럼 날짜가 쓰여진 버튼을 클릭하면, 캘린더가 나오는 모양으로 UIDatePicker의 기본 UI가 변경되었습니다.
이 문제를 해결하기 위한 방법은 2가지 입니다.
1. 버튼 형태의 UIDatePicker를 유지하고 싶다면, 다음의 설정 코드를 지우면 됩니다.
//datePicker 설정을 지우자
datePicker.setValue(UIColor.white, forKeyPath: "textColor")
datePicker.setValue(true, forKeyPath: "highlightsToday")
2. 기존의 wheel 형태의 UIDatePicker로 돌아가고 싶다면, iOS 14 버전에서도 wheel 형태의 UIDatePicker를 사용하도록 강제하면 됩니다.
@IBOutlet weak var datePicker: UIDatePicker!
if #available(iOS 14.0, *) {
datePicker.preferredDatePickerStyle = .wheels
datePicker.setValue(UIColor.white, forKeyPath: "textColor")
datePicker.setValue(true, forKeyPath: "highlightsToday")
}
출처
https://onmyway133.github.io/blog/How-to-set-date-color-in-UIDatePicker-in-iOS-13/
'iOS' 카테고리의 다른 글
[iOS] modalPresentationStyle과 생명주기(Life Cycle) (0) | 2021.03.03 |
---|---|
[iOS] 오류 해결: whose view is not in the window hierarchy! (0) | 2021.03.02 |
[iOS] Timer, 특정 함수 반복 실행하기 (2) | 2021.02.10 |
[iOS] iOS 앱 별점(평점) 구현하기 - Cosmos View (1) | 2021.01.19 |
[iOS] 여러개의 View를 한 번에 정렬하기, UIStackView (0) | 2021.01.04 |
댓글