//
|
// CalendarPickerView.swift
|
// WanPai
|
//
|
// Created by 无故事王国 on 2023/6/19.
|
//
|
|
import UIKit
|
import JQTools
|
import FSCalendar
|
|
class CalendarPickerView: UIView,JQNibView{
|
|
@IBOutlet weak var view_container: UIView!
|
@IBOutlet weak var view_topContainer: UIView!
|
@IBOutlet weak var cons_hei: NSLayoutConstraint!
|
private var clouse:((Date)->Void)?
|
|
lazy private var calendar:FSCalendar = {
|
let calendar = FSCalendar()
|
calendar.scrollDirection = .vertical
|
calendar.today = Date()
|
calendar.locale = Locale(identifier: "zh-CN")
|
calendar.appearance.headerTitleFont = UIFont.systemFont(ofSize: 14, weight: .medium)
|
calendar.appearance.headerTitleColor = .black
|
calendar.appearance.headerDateFormat = "yyyy年MM月"
|
calendar.appearance.weekdayTextColor = .black.withAlphaComponent(0.6)
|
calendar.appearance.weekdayFont = UIFont.systemFont(ofSize: 12, weight: .medium)
|
calendar.appearance.titleSelectionColor = .white
|
calendar.appearance.titleTodayColor = Def_ThemeColor
|
calendar.appearance.selectionColor = Def_ThemeColor
|
calendar.appearance.borderRadius = 0
|
calendar.appearance.todayColor = .clear
|
|
return calendar
|
}()
|
|
override func awakeFromNib() {
|
super.awakeFromNib()
|
cons_hei.constant = 0
|
alpha = 0
|
layoutIfNeeded()
|
view_container.addSubview(calendar)
|
calendar.delegate = self
|
calendar.dataSource = self
|
}
|
|
|
static func show(selectDate:Date? = nil,clouse:@escaping (Date)->Void){
|
let calendarPickerView = CalendarPickerView.jq_loadNibView()
|
calendarPickerView.frame = sceneDelegate?.window?.frame ?? .zero
|
calendarPickerView.clouse = clouse
|
sceneDelegate?.window?.addSubview(calendarPickerView)
|
calendarPickerView.cons_hei.constant = 495
|
calendarPickerView.calendar.frame = CGRect(x: 0, y: 0, width: JQ_ScreenW, height: 370)
|
UIView.animate(withDuration: 0.4) {
|
calendarPickerView.alpha = 1
|
calendarPickerView.layoutIfNeeded()
|
}completion: { _ in
|
if selectDate != nil{
|
calendarPickerView.calendar.setCurrentPage(selectDate!, animated: false)
|
}
|
}
|
}
|
|
|
@IBAction func cancelAction(_ sender: UIButton) {
|
cons_hei.constant = 0
|
UIView.animate(withDuration: 0.4) {
|
self.alpha = 0
|
self.view_topContainer.layoutIfNeeded()
|
} completion: { _ in
|
self.removeFromSuperview()
|
}
|
|
}
|
|
|
override func layoutSubviews() {
|
super.layoutSubviews()
|
view_topContainer.jq_addCorners(corner: [.topLeft,.topRight], radius: 20)
|
}
|
|
}
|
|
extension CalendarPickerView:FSCalendarDelegate{
|
func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
|
clouse?(date)
|
cons_hei.constant = 0
|
UIView.animate(withDuration: 0.4) {
|
self.alpha = 0
|
self.view_topContainer.layoutIfNeeded()
|
} completion: { _ in
|
self.removeFromSuperview()
|
}
|
|
}
|
}
|
|
extension CalendarPickerView:FSCalendarDataSource{
|
func minimumDate(for calendar: FSCalendar) -> Date {
|
return Date()
|
}
|
|
func maximumDate(for calendar: FSCalendar) -> Date {
|
let date = Date().jq_add(day:9) ?? Date()
|
return date
|
}
|
}
|