From c5579d0cb660bc6490fc932ad8e86248f57899d2 Mon Sep 17 00:00:00 2001 From: younger_times <841720330@qq.com> Date: 星期四, 13 七月 2023 18:21:59 +0800 Subject: [PATCH] 新增 --- WanPai/Root/Other/View/CommonDatePickerView.swift | 114 +++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 91 insertions(+), 23 deletions(-) diff --git a/WanPai/Root/Other/View/CommonDatePickerView.swift b/WanPai/Root/Other/View/CommonDatePickerView.swift index 826bfc9..caef16c 100644 --- a/WanPai/Root/Other/View/CommonDatePickerView.swift +++ b/WanPai/Root/Other/View/CommonDatePickerView.swift @@ -1,22 +1,28 @@ -// -// CommonDatePickerView.swift -// WanPai -// -// Created by 无故事王国 on 2023/6/27. -// + // + // CommonDatePickerView.swift + // WanPai + // + // Created by 无故事王国 on 2023/6/27. + // import UIKit import JQTools class CommonDatePickerView: UIView,JQNibView{ + enum DatePickerType{ + case YMD,YM + } + @IBOutlet weak var view_container: UIView! @IBOutlet weak var cons_bottom: NSLayoutConstraint! @IBOutlet weak var pickerView: UIPickerView! + private var type:DatePickerType! private var years = [Int]() private var months = [1,2,3,4,5,6,7,8,9,10,11,12] - + private var days = [Int]() + private var clouse:((Int,Int,Int?)->Void)? override func awakeFromNib() { super.awakeFromNib() @@ -25,16 +31,32 @@ layoutIfNeeded() pickerView.delegate = self pickerView.dataSource = self - - years.append(Date().jq_nowYear()) - years.append(Date().jq_nowYear()-1) - years.append(Date().jq_nowYear()-2) - years.append(Date().jq_nowYear()-3) } - static func show(){ + /// 初始化 + /// - Parameters: + /// - before: 向上N年 + /// - after: 向下N年 + /// - type: 显示状态 + static func show(before:Int = 0,after:Int = 0,type:DatePickerType = .YM,clouse:@escaping (Int,Int,Int?)->Void){ let pickerView = CommonDatePickerView.jq_loadNibView() + pickerView.type = type + pickerView.clouse = clouse + + if before > 0{ + for i in 0...before{ + pickerView.years.append(Date().jq_nowYear() - i) + } + } + + if after > 0{ + for i in 0...after{ + pickerView.years.append(Date().jq_nowYear() + i) + } + } + pickerView.years = pickerView.years.sorted() + pickerView.frame = screnDelegate?.window?.frame ?? .zero screnDelegate?.window?.addSubview(pickerView) @@ -43,6 +65,8 @@ pickerView.alpha = 1 pickerView.layoutIfNeeded() } + + pickerView.pickerView.reloadAllComponents() } @IBAction func hiddenAction(_ sender: UIButton) { @@ -55,6 +79,36 @@ } } + @IBAction func completeAction(_ sender: UIButton) { + + + var year:Int! + var month:Int! + var day:Int? + + switch type{ + case .YMD: + year = years[pickerView.selectedRow(inComponent: 0)] + month = months[pickerView.selectedRow(inComponent: 1)] + day = pickerView.selectedRow(inComponent: 2) + 1 + case .YM: + year = years[pickerView.selectedRow(inComponent: 0)] + month = months[pickerView.selectedRow(inComponent: 1)] + case .none:break + } + + cons_bottom.constant = -(JQ_ScreenW * 0.6974) + UIView.animate(withDuration: 0.4) { + self.alpha = 0 + self.layoutIfNeeded() + } completion: { _ in + self.removeFromSuperview() + self.clouse?(year,month,day) + } + } + + + override func layoutSubviews() { super.layoutSubviews() view_container.jq_addCorners(corner: [.topLeft,.topRight], radius: 20) @@ -65,6 +119,10 @@ func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { if component == 0{ pickerView.reloadComponent(1) + if type == .YMD{pickerView.reloadComponent(2)} + } + if component == 1{ + pickerView.reloadComponent(2) } } } @@ -72,21 +130,28 @@ extension CommonDatePickerView:UIPickerViewDataSource{ func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { - if component == 0{ - return years.count - } + if component == 0{return years.count - if component == 1 && pickerView.selectedRow(inComponent: 0) == 0{ - return Date().jq_nowMonth() + }else if component == 1{ + if component == 1 && pickerView.selectedRow(inComponent: 0) == 0{ + return Date().jq_nowMonth() + } + return months.count + }else if component == 2{ + let year = years[pickerView.selectedRow(inComponent: 0)] + let month = months[pickerView.selectedRow(inComponent: 1)] + return Date.jq_getDays(year, month) } - - return months.count + return 0 } func numberOfComponents(in pickerView: UIPickerView) -> Int { - return 2 + switch type{ + case .YM:return 2 + case .YMD:return 3 + case .none:return 0 + } } - func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { return 55 @@ -95,7 +160,10 @@ func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { if component == 0{ return "\(years[row])年" + }else if component == 1{ + return "\(months[row])月" + }else{ + return "\(row + 1)日" } - return "\(months[row])月" } } -- Gitblit v1.7.1