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