https://developer.apple.com/documentation/uikit/uidatepicker
"A control for the inputting of date and time values."
날짜 및 시간 값 입력을 위한 컨트롤입니다.
@MainActor class UIDatePicker : UIControl
사용자가 시간(달력 날짜, 시간 값, 혹은 모두) 혹은 시간 인터벌(예를 들어 타이머의 경우)을 입력할 수 있도록 하기 위해 데이트 피커를 사용할 수 있습니다. 데이트 피커는 관련 타깃 객체에 상호작용에 대한 정보를 알려줍니다.
인터페이스에 데이트 피커를 추가하려면 아래처럼 해야 합니다.
인터페이스에서 데이트 피커의 위치를 제어하기 위해 오토 레이아웃 규칙을 설정해야 합니다.
시간 및 날짜 선택 처리에 대해서만 데이터 피커를 사용할 수 있습니다. 리스트로부터 임의의 아이템을 선택하는 것을 처리하려면 UIPickerView 객체를 사용하시기 바랍니다.
datePickerMode 속성은 데이트 피커의 설정을 결정합니다. 코드 작성 혹은 인터페이스 빌더를 통해 datePickerMode 값을 설정할 수 있습니다. 날짜 혹은 시간 값을 포함하는 모드의 경우 로케일, 달력, 시대 정보를 설정할 수도 있습니다. 데이트 피커는 현재 사용자에 대해 날짜 및 시간 값을 형식화할 때 해당 정보를 사용하며, 기기의 로케일, 달력, 시간대 영역의 기본값을 사용합니다. 데이트 속성은 달력 및 시간대 영역에 상관없는 NSDate 객체의 형식으로 현재 선택된 날짜를 나타냅니다.
사용자가 선택할 수 있는 날짜의 범위를 제한하려면 minimumDate 및 maximumDate 속성에 값을 할당해야 합니다. 특정 시간 증분만을 허용하기 위해 minuteInterval을 사용할 수도 있습니다.
UIDatePicker.Mode.countDownTimer에 datePickerMode 속성을 설정하는 것은 사용자가 시간과 분 단위로 듀레이션을 선택할 수 있도록 해줍니다. 이 모드에 진입하는 경우 property 속성은 TimeInterval로써 초로 측정되는 듀레이션을 나타냅니다. 이 속성을 초 단위로 설정하더라도 데이트 피커는 값을 분 단위로만 보여줄 수 있다는 것을 기억해야 합니다.
아래 그림은 datePickerMode 속성이 UIDatePicker.Mode.countDownTimer로 설정된, 그리고 minuteInterval 속성이 5로 설정된 데이트 피커를 보여주고 있습니다. countDownDuration의 값은 현재 4500입니다.

Note
시간 인터벌의 선택에서UIDatePicker객체를 사용할 수 있지만, 실제 타이머 동작을 구현하려면Timer객체를 사용해야 합니다. 더 많은 정보는Timer를 보시기 바랍니다.
Timer
https://developer.apple.com/documentation/foundation/timer
데이트 피커는 사용자가 선택된 날짜를 변경할 때 이를 앱에게 알려주기 위해서 타깃 액션 디자인 패턴을 사용합니다. 데이트 피커의 값 변경이 발생했을 때 이를 알려주려면, valueChanged 이벤트를 갖는 액션 메소드를 등록해야 합니다. 런타임 시점에 데이트 피커는 사용자의 날짜 혹은 시간 선택에 대한 응답으로 메소드를 호출합니다.
addTarget(_:action:for:) 메소드를 사용하거나 인터페이스 빌더에서 연결을 생성해 액션에 데이트 피커를 연결할 수 있습니다. 액션 메소드의 세 가지 시그니처는 세 가지 중 한 가지 형태를 취하며, Listing 1에서 보이는 것과 같습니다. 데이트 피커에서 갑 변경에 응답하기 위해 필요한 정보를 제공할 수 있는 형태를 선택하시기 바랍니다.
Listing 1 Action methods for date pickers
@IBAction func doSomething()
@IBAction func doSomething(sender: UIDatePicker)
@IBAction func doSomething(sender: UIDatePicker, forEvent event: UIEvent)
데이트 피커 디버깅 시 아래 사항에 주의하시기 바랍니다.
minimumDate 및 maximumDate 속성의 경계를 확인해야 합니다. 최대 날짜가 최소 날짜보다 빠른 경우 모든 속성은 무시되며, 데이트 피커는 모든 날짜 값 선택을 허용하게 됩니다. 최소 및 최대 날짜는 카운트다운 타이머 모드(UIDatePicker.Mode.countDownTimer)에서 무시됩니다.minuteInterval 값은 60으로 나눠질 수 있으며, 반대의 경우 기본값은 (1)로 사용됩니다.Table 1은 인터페이스 빌더 내부에 잇는 특성 인스펙터에서 데이트 피커에 대해 설정할 수 있는 핵심 특성을 리스트로 보여주고 있습니다.
Table 1 Core attributes
| Attribute | Description |
|---|---|
| Style | 데이트 피커의 스타일입니다. 데이트 피커의 모양을 결정합니다. datePickerStyle 속성과 함께 런타임 시점에서 이 값에 접근할 수 있습니다. |
| Mode | 데이트 피커 모드입니다. 데이트 피커가 시간, 날짜, 시간 및 날짜, 카운트다운 인터벌 중 어떤 것을 표시해야 하는지 결정합니다. datePickerMode 속성과 함께 런타임 시점에서 이 값에 접근할 수 있습니다. |
| Locale | 데이트 피커와 관련이 있는 로케일입니다. 이 속성은 특정 로케일로 시스템 기본값을 오버라이드할 수 있도록 해줍니다. locale 속성을 사용해서 코드 작성으로 이 특성에 접근할 수 있습니다. |
| Interval | 현재 모드에서 보여주고 있는 경우 분 스피너의 세분화입니다. 기본값은 1이며, 최대값은 30입니다. 선택할 수 있는 값은 60으로 나눠지는 숫자(1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30)입니다. minuteInterval 속성을 사용해서 런타임 시점에 이 값에 접근할 수 있습니다. |
Table 2는 데이트 피커에서 날짜 및 시간의 표시를 제어하는 특성을 리스트로 보여주고 있슨비다.
Table 2 Time attributes
| Attribute | Description |
|---|---|
| Date | 데이트 피커가 표시할 초기 날짜입니다. 현재 날짜를 기본값으로 할 수 잇즈미나, 커스텀 값으로 설정할 수도 있슨비다. 이 특성은 코드 작성에서 date 속성을 설정하는 것과 동일합니다. |
| Constraints | 데이터 피커에 의해 표시되는 선택 가능한 날짜의 범위입니다. 동적 범위를 사용하려면 코드 작성으로 minimumDate 및 maximumDate 속성을 설정해야 합니다. 데이트 피커는 모드 특성이 카운트다운 타이머로 설정되었을 때 이와 같은 옵션을 무시합니다. |
| Timer | 카운트다운 타이머 모드에서 사용될 때 데이트 피커의 초기 값입니다. 값은 초 단위로 측정되지만, 표시는 분 단위입니다. |
데이트 피커의 상속된 인터페이스 빌더 특성에 대한 정보는 UIControl 및 UIView를 보시기 바랍니다.
UIControl
https://developer.apple.com/documentation/uikit/uicontrol
https://velog.io/@panther222128/UIControl
UIView
https://developer.apple.com/documentation/uikit/uiview
https://velog.io/@panther222128/UIView
preferredDatePickerStyle을 설정해서 UIDatePicker의 모양을 변경시킬 수 있습니다. 모양 스타일의 리스트는 UIDatePickerStyle을 보시기 바랍니다.
UIDatePickerStyle
https://developer.apple.com/documentation/uikit/uidatepickerstyle
https://velog.io/@panther222128/UIDatePickerStyle
오토 레이아웃을 사용해서 레이아웃에 데이트 피커를 통합시켜야 합니다. 데이트 피커의 크기가 조정될 수 있을지라도 데이트 피커는 내적 컨텐트 사이즈에서 사용되어야 합니다.
데이트 피커는 고유한 자신의 internationalization을 처리합니다. 해야 하는 것은 적합한 로케일 설정뿐입니다. 특성 인스펙터에서 로케일(locale) 필드를 설정함으로써 나타나는 데이트 피커에 대한 특정 로케일을 선택할 수 있습니다. 로케일을 설정하는 것은 데이트 피커가 표시를 위해 사용하는 언어를 변경하며, 날짜 및 시간의 형식도 변경합니다(예를 들어 특정 로케일은 월 전에 날자가 나타나거나 12시간 단위보다 24시간 단위를 선호합니다). 데이트 피커의 넓이는 localization의 길이에 따라서 자동으로 조정됩니다. 시스템 언어를 사용하려면 이 속성을 기본값으로 둬야 합니다.
더 많은 정보는 Internationalization and Localization Guide를 보시기 바랍니다.
데이트 피커는 기본값으로 접근 가능합니다. 데이트 피커에 있는 각각의 시간 컴포넌트는 고유한 접근성 요소이며, Adjustable(adjustable) 특성을 갖습니다.
기기는 사용자가 보이스오버를 활성화하면 접근성 값, 특성, 힌트를 읽고 각 데이트 피커에 대해 소리냅니다. 보이스오버는 사용자가 피커 휠에 탭할 때 이 정보를 소리냅니다. 예를 들어 추가 알람 페이지(시계 > 알람 > 추가)에서 시간 열을 탭할 때 보이스 오버는 아래 내용을 소리냅니다.
"2 o'clock. Picker item. Adjustable. Swipe up or down with one finger to adjust the value."
iOS 컨트롤을 접근 가능하게 만드는 것에 대한 더 많은 정보는 Accessibility Programming Guide for iOS를 보시기 바랍니다.
사용자 상호작용에 대한 응답으로 특정 액션 혹은 의도를 전달하는 시각적 요소인 컨트롤에 대한 베이스 클래스입니다.
https://developer.apple.com/documentation/uikit/uicontrol
https://velog.io/@panther222128/UIControl
사용자 상호작용에 응답해 커스텀 코드를 실행하는 컨트롤입니다.
https://developer.apple.com/documentation/uikit/uibutton
https://velog.io/@panther222128/UIButton
컬러 피커를 표시하는 컨트롤입니다.
https://developer.apple.com/documentation/uikit/uicolorwell
https://velog.io/@panther222128/UIColorWell
각각이 앱의 문서 혹은 다른 데이터 모델 엔티티에 상응하는 점의 연속을 수평으로 표시하는 컨트롤입니다.
https://developer.apple.com/documentation/uikit/uipagecontrol
https://velog.io/@panther222128/UIPageControl
여러 세그먼트를 구성하는 수평 컨트롤이며, 각 세그먼트는 이산적 버튼처럼 기능합니다.
https://developer.apple.com/documentation/uikit/uisegmentedcontrol
https://velog.io/@panther222128/UISegmentedControl
값의 연속적 범위로부터 하나의 값을 선택하기 위한 컨트롤입니다.
https://developer.apple.com/documentation/uikit/uislider
https://velog.io/@panther222128/UISlider
값의 증가 혹은 감소를 위한 컨트롤입니다.
https://developer.apple.com/documentation/uikit/uistepper
https://velog.io/@panther222128/UIStepper
온/오프처럼 이진 선택을 제공하는 컨트롤입니다.
https://developer.apple.com/documentation/uikit/uiswitch
https://velog.io/@panther222128/UISwitch