MonthYearWheelPicker(月份年份滚轮选择器)

如果您以 iOS 17.4 或更高版本为目标,您现在可以使用 UIDatePicker.Mode.yearAndMonth,这将使此软件包变得过时。

一个 UIPickerView 子类,允许您快速添加一个仅用于选择月份和年份的选择器;在大多数情况下,它可以作为 UIDatePicker 的直接替代品。当您只想选择月份和年份,例如信用卡到期日期选择器,而 UIDatePicker 不适用时,这非常有用。

当前版本使用 Swift 5.6 编写,并支持 iOS 10 及以上版本。

如果您想在 SwiftUI 中使用它,我已经编写了一个基本示例,演示了如何使用 SwiftUI 重写整个项目,通常比通过 UIViewRepresentable 导入它更容易。

使用示例

let expiryDatePicker = MonthYearWheelPicker()
expiryDatePicker.onDateSelected = { (month, year) in
	let string = String(format: "%02d/%d", month, year)
	// will show something like 06/2022
}

MonthYearWheelPicker 使用基于块的 onDateSelected 方法,在选择器中进行选择后将月份和年份返回给您。如果您更喜欢它像 UIDatePicker 一样工作,您也可以使用 target 和 selector 来获取值更改时的回调。例如:

monthYearWheelPicker.addTarget(self, action: #selector(monthYearWheelPickerDidChange), for: .valueChanged)

@objc private func monthYearWheelPickerDidChange() {
    let date = monthYearWheelPicker.date
    // A standard date object that will be your selected month and year with day set to 1 and time set to 00:00:00
}

默认情况下,选择器的最小日期设置为当前月份和年份,最大日期设置为当前月份和未来 15 年(因为这对于支付处理的到期日期选择器的最常见用法是有意义的)。可以使用 minimumDatemaximumDate 属性更改此设置。与 UIDatePicker 一样,无效日期显示为灰色,并将动画返回到有效日期(例如,如果您的最大日期是 2022 年 6 月,那么当您滚动到 9 月时,它将显示为灰色,并将您滚动回 6 月;如果您然后将年份更改为 2023 年,则所有月份都将可用)。

包含了一些单元测试,用于检查一切是否正常工作,以及所有公共方法的文档。如果您遇到任何问题,请提出问题

安装

Swift Package Manager:https://github.com/bendodson/MonthYearWheelPicker.git

手动:MonthYearWheelPicker 只有一个文件,因此您可以直接下载并添加MonthYearWheelPicker.swift

MonthYearWheelPicker being used as a keyboard input