适用于 tvOS 的简单日期选择器
TVOSPicker
此包提供了 tvOS 上的 UIKit 中缺少的组件 – 选取器视图。API和行为在很大程度上受到iOS的启发。TVOSPickerView
UIPickerView
该软件包还提供了一个简单的日期选择器,该选择器构建在基本TVOSPickerView组件之上。目前,它仅支持公历。
演示.mp4
要求
- 斯威夫特 5.7
- 电视操作系统 13+
安装
Swift Package Manager
添加到您的 :Package.swift
dependencies: [
.package(url: "https://github.com/ViacomInc/TVOSPicker.git", .upToNextMajor(from: "0.1.0"))
]
用法
您可以在目录中的项目中找到一些使用示例。TVOSPickerViewExamples
Examples
TVOSPickerView
要使用 ,请将其添加到视图层次结构中,并将属性设置为符合协议的对象。委托控制显示多少个组件(列)、每个组件中有多少行以及每行中要显示的字符串。目前不支持自定义行视图。(可选)委托可以自定义每列的宽度(默认情况下,列的宽度相等)以及行的辅助功能标签。TVOSPickerView
delegate
TVOSPickerViewDelegate
import TVOSPicker
...
// ViewController viewDidLoad
let picker = TVOSPickerView(
style: .default, // pass custom style here if needed
delegate: self
)
view.addSubview(picker)
... // setup frames/constraints
// to reload all components
picker.reloadData()
// to reload specific components
picker.reloadComponents([0, 2, 4])
// OR
picker.reloadComponent(1)
// ViewController TVOSPickerViewDelegate conformance
extension ViewController: TVOSPickerViewDelegate {
func numberOfComponents(in pickerView: TVOSPickerView) -> Int {
// number of components (columns)
}
func pickerView(_ pickerView: TVOSPickerView, numberOfRowsInComponent component: Int) -> Int {
// number of rows in each component
}
func pickerView(_ pickerView: TVOSPickerView, titleForRow row: Int, inComponent component: Int) -> String? {
// string to display in each row
}
func pickerView(_ pickerView: TVOSPickerView, didSelectRow row: Int, inComponent component: Int) {
// update state with the newly selected row
}
func indexOfSelectedRow(inComponent component: Int, ofPickerView pickerView: TVOSPickerView) -> Int? {
// provide an index of selected row - used as initially focused index as well as after each reloadData
}
}
TVOSDatePickerView
TVOSDatePickerView
是建立在 之上的视图。它存储选取器委托对象,并要求它是 .此委托为具有 3 个组件的选取器提供默认实现:日、月和年。初始值设定项参数允许配置组件顺序、区域设置、支持的日期范围、初始日期以及天、月和年的自定义格式化程序。TVOSPickerView
GregorianCalendarDatePickerDelegate
import TVOSPicker
...
// ViewController viewDidLoad
let picker = TVOSDatePickerView(
delegate: GregorianCalendarDatePickerDelegate( // delegate supporting Gregorian calendar is provided with the package
order: .dayMonthYear, // customize order of components
locale: Locale.autoupdatingCurrent,
minYear: 1950,
initialDate: Date()
)
)
picker.style = ... // by default TVOSDatePickerView uses .datePicker style, this can be overriden here
view.addSubview(picker)
... // setup frames/constraints
// to retrieve selected date
print(picker.date)
贡献
请阅读 CONTRIBUTING.md,详细了解我们的行为准则以及向我们提交拉取请求的流程。
许可证
TVOSPicker在Apache 2.0许可证下发布。有关详细信息,请参阅许可证。