Date Picker는 날짜 및 시간을 입력하는 컨트롤입니다. Date picker를 이용하여 특정 시점의 날짜와 시간 또는 시간 간격을 입력할 수 있습니다.
Date picker를 인터페이스에 추가하기
- Date picker를 생성하고 모드를 설정합니다.
- 필요한 경우 최소 및 최대 날짜와 같은 추가 구성 옵션을 제공합니다.
- Date picker에 액션 메서드를 연결합니다.
Date picker에 액션 메서드 연결하기
Date picker는 사용자가 선택된 날짜를 바꿀 경우 애플리케이션에 알리기 위해 타깃 액션 디자인 패턴을 사용합니다. Date picker의 값이 변경될 때 알림을 받기 위해 액션 메서드를 valueChanged로 설정합니다. 실행시점에서 Date picker는 사용자의 날짜 및 시간 선택하게되면 설정된 액션 메서드를 호출합니다. Date picker를 액션 메서드에 연결하기 위해 인터페이스 빌더를 이용하거나 코드로 addTarget(_:action:for:)메서드를 사용합니다.
- Mode: Date picker의 모드를 설정합니다. 코드상으로 datePickerMode 프로퍼티를 사용하여 이 값에 접근할 수 있습니다.
- Locale: Date picker에 사용될 로케일입니다. 코드상으로 locale 프로퍼티를 통해 이 값에 접근할 수 있습니다.
- Interval: 현재 선택된 모드의 분 간격을 나타냅니다. 선택한 값은 60의 제수여야합니다. minnuteInterval프로퍼티를 통해 이 값에 접근할 수 있습니다.
- Date: Date picker가 처음 보여주게 될 날짜를 설정할 수 있습니다. 기본값은 현재 날짜로 설정되어 있습니다. date프로퍼티를 통해 접근할 수 있습니다.
- Constraints: Date 하단의 Minimum Date와 MaximumDate를 통해 Date picker가 보여줄 날짜의 범위를 설정할 수 있습니다. minimumDate, maximumDate 프로퍼티를 통해 설정할 수 있습니다.
- Timer: 카운트다운 타이머 모드에서 date picker의 표시되는 초기값입니다. 값은 초 단위로 계산되지만 보이는 것은 분 단위로 표시됩니다. countDownDuration 프로퍼티를 통해 이 값에 접근할 수 있습니다.
UIDatePicker 클래스의 주요 프로퍼티
- var datePickerMode: UIDatePickerMode: Date picker의 모드를 결정합니다.
- 기본값은 dateAndTime입니다.
- time, date, dateAndTime, countDownTimer 네가지 모드를 설정할 수 있습니다.
- var date: Date: date picker에 보여지게 될 날짜입니다.
- var calendar: Calendar!: date picker에 사용되는 캘린더입니다.
- var locale: Locale?: date picker에서 사용하는 로케일입니다.
- var timeZone: TimeZone?: date picker에서 표시된 날짜에 반영된 시간대입니다.
- var maximumDate: Date?: date picker에서 보여줄 수 있는 최대 날짜입니다.
- var minimumDate: Date?: date picker에서 보여줄 수 있는 최소 날짜입니다.
- minuteInterval: Int: date picker에서 분을 표시하는 간격입니다. 기본값과 최솟값은 1이고 최댓값은 30입니다.
- var countDownDuration: TimeInterval: date picker의 모드가 countDownTimer로 설정될 경우 date picker에 표시되는 초깃값입니다.
UIDatePicker 클래스의 주요 메서드
- func setDate(Date, animated: Bool): date picker에 처음 표시할 날짜를 설정합니다.
DateFormatter
DateFormatter는 날짜와 텍스트 표현 간의 변환을 할 수 있게 해줍니다. DateFormatter를 활용해 날짜와 시간을 다양한 방식으로 출력하거나 출력된 날짜 및 시간에 대한 문자열을 읽어올 수 있습니다.
DateFormatter의 인스턴스는 Date 객체의 문자열 표현을 생성하고, 날짜 및 시간의 텍스트 표현을 Date 객체로 변환합니다.
사용자 날짜 및 시간 표현
사용자에게 날짜를 표시할 때 특정 요구 사항에 따라 date formatter의 dateStyle과 timeStyle프로퍼티를 설정합니다. 예를 들어, 만약에 시간을 제외한 월, 일, 연도를 보여주고 싶다면, dateStyle프로퍼티를 long으로 설정하고 timeStyle을 none으로 설정합니다. 반대로 시간만 보여주고 싶다면 dateStyle프로퍼티를 none으로 timeStyle프로퍼티를 short로 설정합니다. dateStyle과 timeStyle 프로퍼티의 값을 기반으로 DateFormatter는 지정된 로케일에 적합한 지정된 날짜의 표현을 제공합니다. 미리 정의된 스타일을 통해 얻을 수 없는 형식을 지정해야 한다면 setLocalizedDateFormatFromTemplate(_:)을 사용하여 날짜 형식을 지정할 수 있습니다.
고정 형식 날짜 표현
RFC3339와 같은 고정 형식의 날짜로 사용해야 한다면, dateFormat 프로퍼티를 특정 포맷 문자열로 설정합니다. 대부분의 경우 고정된 형식의 경우 locale 프로퍼티를 POSIX locale("en_US_POSIX")로 설정하고, timeZone프로퍼티를 UTC로 설정합니다.
DateFormatter의 주요 프로퍼티와 메서드
- func date(from: String): 주어진 문자열을 Date 객체(날짜와 시간)로 변환하여 반환합니다.
- func string(from: Date): 주어진 Date 객체를 문자열로 변환하여 반환합니다.
- func setLocalizedDateFormatFromTemplate(String): 지정된 로케일을 사용하여 날짜 형식을 설정합니다.
- var dateStyle: DateFormatter.Style: DateFormatter의 날짜 형식입니다.
- var timeStyle: DateFormatter.Style: DateFormatter의 시간 형식입니다.
- var dateFormat: String!: 고정 형식 날짜 표현을 사용할 때의 날짜 형식입니다.
- var locale: Locale!: DateFormatter의 로케일입니다.
- var timeZone: TimeZone!: DateFormatter의 시간대입니다.
let dateFormatter: DateFormatter = {
let formatter: DateFormatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd hh:mm:ss"
return formatter
}()
@IBAction func didDatePickerValueChanged(_ sender: UIDatePicker){
let date: Date = self.datePicker.date
let dateToString: String = self.dateFormatter.string(from: date)
self.dateLabel.text = dateToString
}
'개발 > 아이오에스' 카테고리의 다른 글
swift] 이미지 가져오기 , 수정하기 (0) | 2020.12.22 |
---|---|
swift] UIImageView 클릭 시 동작 터치시 동작 UITapGestureRecognizer 사용 (0) | 2020.12.22 |
swift] delegate 정리 UITextFieldDelegate 예제 (0) | 2020.12.22 |
swift 기본 MVC 패턴 Model-View-Controller (0) | 2020.12.21 |
오토 레이아웃이란? (0) | 2020.12.21 |