[IOS] UIDatePicker 사용하기(DateFormatter)

2022. 12. 6. 01:43IOS

 

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