Date Picker

Din의 개발노트·2021년 1월 5일
0

⏰ Date Picker

iOS에서 날짜를 표현하는 UI는 대부분 Date Picker를 사용합니다.

1. Locale

  • locale 속성이 default로 되어있으면 아이폰 설정에 있는 locale를 그대로 사용합니다.
  • 코드에서 설정할 때는 locale 속성을 사용합니다. "ko_KR"

2. Interval

  • Interval 옵션은 항목 사이의 간격을 설정합니다.
  • 기본값이 1분, 최대 30분까지 설정 가능
  • 코드에선 minimumDate 사용

3. Date

  • Date 옵션에서는 최초에 표시할 날짜와 시간을 선택할 수 있습니다.
  • 기본값은 현재 날짜와 시간입니다.
  • 직접 지정하고 싶다면 Custom으로 바꾸고 설정해야 합니다.

Calendar와 TimeZone 속성은 코드로만 설정할 수 있습니다.

import UIKit

class DatePickerModeViewController: UIViewController {
   
    
    
    @IBOutlet weak var picker: UIDatePicker!
    
    @IBAction func dateChanged(_ sender: UIDatePicker) {
        print(sender.date)
    }
    
    
   override func viewDidLoad() {
      super.viewDidLoad()
      
    picker.datePickerMode = .dateAndTime
    picker.locale = Locale(identifier: "ko_KR")
    picker.minuteInterval = 1
    picker.date = Date()
    
    picker.setDate(Date(), animated: true) // 날짜를 설정할때 애니메이션 효과를 적용하고 싶다면 setDate 속성을 사용
    
//    picker.minimumDate
//    picker.maximumDate
    
//    picker.countDownDuration = 60
    
    // 캘린더와 타임존 속성은 코드로만 설정할 수 있습니다,.
    
//    picker.calendar
//    picker.timeZone
   }
}

⏱ Count Down Timer

버튼을 누르면 설정한 시간이 count되면서 Label에 표시
0초가 되면 타이머 종료, 효과음 재생

import UIKit
import AudioToolbox

class CountDownTimerViewController: UIViewController {
   
   @IBOutlet weak var timeLabel: UILabel!
   
   
   @IBOutlet weak var picker: UIDatePicker!
   
    var remainingSeconds = 0 // 남은 시간 저장할 속성 선언, 0으로 초기화
    
   @IBAction func start(_ sender: Any) {
    timeLabel.text = "\(Int(picker.countDownDuration))"
    remainingSeconds = Int(picker.countDownDuration)
    
    Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (timer) in
        self.remainingSeconds -= 1
        self.timeLabel.text = "\(self.remainingSeconds)"
        // repeats -> false를 전달하면 1번만 실행하고 종료함
        
        
        if self.remainingSeconds == 0 {
            timer.invalidate()
            AudioServicesPlaySystemSound(1315)
        } // 남은 시간이 0초면 타이머 종료, 효과음 재생
    }
   }
   
   override func viewDidLoad() {
      super.viewDidLoad()
      
    picker.countDownDuration = 60
   }
}

profile
iOS Develpoer

0개의 댓글