UIKitCatalog/UIKitCatalog/DatePickerController.swift
2020-06-17 11:00:09 -08:00

76 lines
2.3 KiB
Swift
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
See LICENSE folder for this samples licensing information.
Abstract:
A view controller that demonstrates how to use `UIDatePicker`.
*/
import UIKit
class DatePickerController: UIViewController {
// MARK: - Properties
@IBOutlet weak var datePicker: UIDatePicker!
@IBOutlet weak var dateLabel: UILabel!
// A date formatter to format the `date` property of `datePicker`.
lazy var dateFormatter: DateFormatter = {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .short
return dateFormatter
}()
// MARK: - View Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
configureDatePicker()
}
// MARK: - Configuration
func configureDatePicker() {
datePicker.datePickerMode = .dateAndTime
/** Set min/max date for the date picker. As an example we will limit the date between
now and 7 days from now.
*/
let now = Date()
datePicker.minimumDate = now
// Decide the best date picker style based on the trait collection's vertical size.
datePicker.preferredDatePickerStyle = traitCollection.verticalSizeClass == .compact ? .compact : .inline
var dateComponents = DateComponents()
dateComponents.day = 7
let sevenDaysFromNow = Calendar.current.date(byAdding: .day, value: 7, to: now)
datePicker.maximumDate = sevenDaysFromNow
datePicker.minuteInterval = 2
datePicker.addTarget(self, action: #selector(DatePickerController.updateDatePickerLabel), for: .valueChanged)
updateDatePickerLabel()
}
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
// Adjust the date picker style due to the trait collection's vertical size.
super.traitCollectionDidChange(previousTraitCollection)
datePicker.preferredDatePickerStyle = traitCollection.verticalSizeClass == .compact ? .compact : .inline
}
// MARK: - Actions
@objc
func updateDatePickerLabel() {
dateLabel.text = dateFormatter.string(from: datePicker.date)
Swift.debugPrint("Chosen date: \(dateFormatter.string(from: datePicker.date))")
}
}