azhy의 iOS 이야기

[iOS/Swift] UIDatePicker 최소, 최대 날짜 설정하기 본문

Swift

[iOS/Swift] UIDatePicker 최소, 최대 날짜 설정하기

azhy 2024. 11. 12. 21:45

2022년 7월 24일에 작성됨

 

UIDatePicker로 날짜를 선택하는 경우, 특정한 날짜를 선택하면 안 되는 경우가 있습니다.

예를 들어 오늘 기준 미래의 날짜를 선택하면 안되거나 과거 특정한 날 이상을 벗어나면 안 되는 경우 등 다양한 경우의 수가 존재하죠. 이럴 때 UIDatePicker에 선택할 수 있는 날짜의 범위를 지정해 줄 수 있습니다.

private let datePicker: UIDatePicker = {
    let datePicker = UIDatePicker()
    datePicker.preferredDatePickerStyle = .wheels
    datePicker.datePickerMode = .date
    datePicker.locale = Locale(identifier: "ko-KR")
    datePicker.frame.size = CGSize(width: 0, height: 250)

    let calendar = Calendar(identifier: .gregorian)
    let currentDate = Date()
    var components = DateComponents()
    components.calendar = calendar

    // datePicker max 날짜 세팅 -> 오늘 날짜 에서
    //
    components.year = -1
    components.month = 12
    let maxDate = calendar.date(byAdding: components, to: currentDate)!

    // datePicker min 날짜 세팅 -> 30년 전 까지
    //
    components.year = -31
    let minDate = calendar.date(byAdding: components, to: currentDate)!

    datePicker.minimumDate = minDate
    datePicker.maximumDate = maxDate

    return datePicker
}()

방법은 상당히 간단합니다. 중요한 부분은 min 날짜와 max 날짜인데 min year, month와 max year, month의 날짜를 설정해서 datePicker에 세팅해 주면 됩니다.

저의 경우에 과거 30년 전부터 오늘 까지 범위를 설정을 했습니다. 본인의 datePicker에서 min 날짜와 max 날짜만 세팅을 해주면 될 것 같습니다.

 

이렇게 하면 설정한 범위를 벗어나는 date는 선택을 할 수 없게 됩니다.