--- /dev/null
- if DCConfig.appLanguage == .chinse || DCConfig.appLanguage == .Traditional_Chinese {
+import UIKit
+
+class CustomPicker3: BasePresentView {
+ private let titleLabel = UILabel()
+ private let btn = UIButton(type: .custom)
+ private let okBtn = CustomButton()
+ private let datePicker = UIDatePicker()
+ var selectedDate = Date() {
+ didSet {
+ datePicker.date = selectedDate
+ }
+ }
+ var didSelected: ((Date) -> Void)?
+ private var title: String = ""
+
+ init(title: String, defaultDate: Date = createDate(year: 2000, month: 1, day: 1)) {
+ self.title = title
+ self.selectedDate = defaultDate
+ let h = CGFloat(50 + 250 + kSafeBtm) // UIDatePicker的高度通常为250左右加上底部安全距离
+ super.init(contentHeight: h)
+ }
+
+ required init?(coder: NSCoder) {
+ fatalError("init(coder:) has not been implemented")
+ }
+
+ override func setupSubView() {
+ super.setupSubView()
+ contentView.addSubviews([titleLabel, btn, okBtn, datePicker])
+ }
+
+ override func setupLayout() {
+ super.setupLayout()
+ titleLabel.snp.makeConstraints { (m) in
+ m.top.equalToSuperview()
+ m.left.right.equalToSuperview().inset(60)
+ m.height.equalTo(50)
+ }
+ btn.snp.makeConstraints { (m) in
+ m.centerY.equalTo(titleLabel)
+ m.right.equalToSuperview()
+ m.size.equalTo(60)
+ }
+ okBtn.snp.makeConstraints { make in
+ make.bottom.equalToSuperview().inset(32)
+ make.left.right.equalToSuperview().inset(51)
+ make.height.equalTo(46)
+ }
+ datePicker.snp.makeConstraints { make in
+ make.left.right.equalToSuperview()
+ make.top.equalToSuperview().inset(50)
+ make.bottom.equalTo(okBtn.snp.top).offset(-10)
+ }
+ }
+
+ override func setupStyle() {
+ super.setupStyle()
+ contentView.backgroundColor = .color(.cellBg)
+ titleLabel.do { (v) in
+ v.textColor = .color(.secondary)
+ v.font = .semiBold(16)
+ v.textAlignment = .center
+ v.text = title
+ }
+ btn.do { v in
+ v.setImage(UIImage(named: "close_icon"), for: .normal)
+ v.addTarget(self, action: #selector(closeAction), for: .touchUpInside)
+ }
+ datePicker.do { v in
+ if #available(iOS 13.4, *) {
+ v.preferredDatePickerStyle = .wheels
+ }
+ v.backgroundColor = .color(.cellBg)
+ v.datePickerMode = .date
++ if CCConfig.appLanguage == .chinse || CCConfig.appLanguage == .Traditional_Chinese {
+ v.locale = Locale(identifier: "zh_CN")
+ }
+
+ v.addTarget(self, action: #selector(dateChanged(_:)), for: .valueChanged)
+ v.minimumDate = CustomPicker3.createDate(year: 1900, month: 1, day: 1)
+ v.maximumDate = Date()
+ v.date = selectedDate
+ }
+ okBtn.set(title: "确定", style: .theme1, target: self, action: #selector(okAction))
+ }
+
+ @objc func dateChanged(_ sender: UIDatePicker) {
+ selectedDate = sender.date
+ }
+
+ @objc func closeAction() {
+ hide()
+ }
+
+ @objc func okAction() {
+ didSelected?(selectedDate)
+ hide()
+ }
+
+ private static func createDate(year: Int, month: Int, day: Int) -> Date {
+ var components = DateComponents()
+ components.year = year
+ components.month = month
+ components.day = day
+ components.hour = 0
+ components.minute = 0
+ components.second = 0
+ return Calendar.current.date(from: components) ?? Date()
+ }
+}