2022. 12. 6. 01:43ㆍIOS
UIDatePicker
날짜는 어떤 앱을 만들든 참 많이 쓰인다. 사용자가 날짜를 지정할 때 가장 많이 쓰이는 것이 바로 UIDatePicker이다. 오늘은 UIDatePicker를 좀 정리해보려고 한다. 최대한 사용하기 쉽도록 코드들도 작성해 놓았다.
먼저 datePicker 변수를 생성해주자!
private let datePicker = UIDatePicker()
private func configureDatePicker() {
}
datePicker와 관련한 속성들은 configureDatePicker 매서드를 통해 생성해 줄 것이다.
그럼 속성들에는 어떤 것이 있는 지 살펴보자. 참고로 모든 속성을 다 사용할 필요는 없다. 필요해 의해 선택적으로 사용하도록 하자!
datePickerMode
먼저 datePicker는 총 4가지 datePickerMode가 존재한다.
- dateAndTime : 날짜와 시간 둘다 선택
- date : 날짜만 선택
- time : 시간만 선택
- countDownTimer - 타이머 기능
원하는 mode를 골라 다음과 같이 선언해주면 된다. 필자는 날짜만 선택하는 date로 설정하였다.
self.datePicker.datePickerMode = .date
preferredDatePickerStyle
이제 선호하는 스타일을 설정해주자. DatePicker은 총 4가지 스타일이 존재한다.
- automatic : 자동으로 설정된다.
- compact : 날짜가 뜨고 해당 날짜를 클릭하면 달력이 나타난다.
- inline : 달력이 나타난다.
- wheel : 위아래 스크롤이 가능한 바퀴모양이 나타난다.
원하는 스타일을 골라 선언해주면 된다. 필자는 wheel로 설정하였다.
self.datePicker.preferredDatePickerStyle = .wheels
Locale
사용하는 국가를 입력한다. 만일 locale을 설정하지 않았다면 아이폰 기본 설정값을 사용한다. 참고로 한국은 "ko_KR"이다.
self.datePicker.locale = Locale(identifier: "ko_KR")
minuteInterval
wheels같은 경우 스크롤 내리면서 시간을 설정하는 데 그때 나타내는 간격을 분 단위로 설정할 수 있다. 기본 설정이 1분이며 최대 30분까지 가능하다
self.datePicker.minuteInterval = 10
Date | setDate
datePicker에서 맨 처음 선택되어있는 날짜를 선택할 수 있다.
self.datePicker.date = Date()
self.datePicker.setDate(Date(), animated = false)
minimumDate, maxmumDate
사용자가 선택할 수 있는 날짜나 시간에 제한범위를 설정할 수 있다. 다음과 같이 작성하면 해당 datePicker로는 현재 이후로만 선택할 수 있다.
self.datePicker.minimumDate = Date()
필자는 datePicker로 날짜를 선택하고 이를 DateFormatter를 사용해 원하는 형태로 출력하도록 구현하였다. DateFormatter 사용법도 datePicker랑 비슷하다.
@IBOutlet weak var dateLable: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.configureDatePicker()
}
// datePicker 선언
private let datePicker = UIDatePicker()
func configureDatePicker() {
// datePicker 속성 설정
self.datePicker.datePickerMode = .date
self.datePicker.preferredDatePickerStyle = .inline
self.datePicker.locale = Locale(identifier: "ko_KR")
self.datePicker.minimumDate = Date()
// dateLabel에 datePicker 넣어주고 datePicker 값 변동시 datePickerDidchange실행
self.dateLable.inputView = self.datePicker
self.datePicker.addTarget(self, action: #selector(datePickerDidchange(_:)), for: .valueChanged)
}
@objc private func datePickerDidchange(_ datePicker: UIDatePicker) {
// DateFormatter을 이용해 출력형태를 만들고 dateLable에 값 들어가도록
let formmater = DateFormatter()
formmater.dateFormat = "MM/dd/yyyy"
formmater.locale = Locale(identifier: "ko_KR")
self.dateLable.text = formmater.string(from: datePicker.date)
}
// 외부 클릭시 dataPicker사라지도록
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
'IOS' 카테고리의 다른 글
[IOS/Swift] NotificationCenter 사용하기 (0) | 2022.12.08 |
---|---|
[IOS] 데이터저장소 UserDefault (0) | 2022.12.07 |
[IOS] UITextView 테두리칠하기(border) (0) | 2022.12.05 |
[IOS] UITableView(2) (2) | 2022.12.03 |
[IOS] Alert, ActionSheet (0) | 2022.12.03 |