Swift UI - 日期选择控件(UIDatePicker)
注:代码已升级至Swift4
使用Storyboard创建日期选择控件
首先我们将一个 UIDatePicker 控件和一个按钮直接添加到 Main.Storyboard 上。该按钮是为了点击时弹出提示框显示当前选择的日期和时间。
同时在 ViewController.swift 中使用 IBOutlet 建立起控件和事件的关联,具体代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| import UIKit class ViewController: UIViewController {
@IBOutlet var dpicker:UIDatePicker! @IBOutlet var btnshow:UIButton!
override func viewDidLoad() { super.viewDidLoad() }
@IBAction func showClicked(_ sender:UIButton) { let date = dpicker.date
let dformatter = DateFormatter() dformatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss" let datestr = dformatter.string(from: date)
let message = "您选择的日期和时间是:\(datestr)"
let alertController = UIAlertController(title: "当前日期和时间", message: message, preferredStyle: .alert) let cancelAction = UIAlertAction(title: "确定", style: .cancel, handler: nil) alertController.addAction(cancelAction) self.present(alertController, animated: true, completion: nil) } }
|
纯代码创建日期选择控件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import UIKit class ViewController: UIViewController {
override func viewDidLoad() { super.viewDidLoad()
let datePicker = UIDatePicker(frame: CGRect(x:0, y:0, width:320, height:216)) datePicker.locale = Locale(identifier: "zh_CN") datePicker.addTarget(self, action: #selector(dateChanged), for: .valueChanged) self.view.addSubview(datePicker) }
func dateChanged(datePicker : UIDatePicker){ let formatter = DateFormatter() formatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss" print(formatter.string(from: datePicker.date)) }
override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
|
日期选择控件文字改成中文
默认日期选择控件中的文字是英文,如果想显示中文,则需要将日期选择控件的区域做如下设置
1 2
| datePicker.locale = Locale(identifier: "zh_CN")
|
改变控件时间选择模式
默认情况下日期选择控件里面选项既有日期,又有时间。我们可以修改选择模式,让它只有其中一种。
(1)只有日期选择
1
| datePicker.datePickerMode = .date
|
(2)只有时间选择
1
| datePicker.datePickerMode = .time
|
修改文字颜色
UIDatePicker 默认的文字颜色是黑色,但如果我们使用的是深色背景的话(比如)会难以辨认。我们可以通过 setValue 来修改文字颜色。
1
| datePicker.setValue(UIColor.white, forKey: "textColor")
|