适用于 tvOS 的简单日期选择器

TVOSPicker

此包提供了 tvOS 上的 UIKit 中缺少的组件 – 选取器视图。API和行为在很大程度上受到iOS的启发。TVOSPickerViewUIPickerView

该软件包还提供了一个简单的日期选择器,该选择器构建在基本TVOSPickerView组件之上。目前,它仅支持公历。

演示.mp4

要求

  • 斯威夫特 5.7
  • 电视操作系统 13+

安装

Swift Package Manager

添加到您的 :Package.swift

dependencies: [
    .package(url: "https://github.com/ViacomInc/TVOSPicker.git", .upToNextMajor(from: "0.1.0"))
]

用法

您可以在目录中的项目中找到一些使用示例。TVOSPickerViewExamplesExamples

TVOSPickerView

要使用 ,请将其添加到视图层次结构中,并将属性设置为符合协议的对象。委托控制显示多少个组件(列)、每个组件中有多少行以及每行中要显示的字符串。目前不支持自定义行视图。(可选)委托可以自定义每列的宽度(默认情况下,列的宽度相等)以及行的辅助功能标签。TVOSPickerViewdelegateTVOSPickerViewDelegate

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 个组件的选取器提供默认实现:日、月和年。初始值设定项参数允许配置组件顺序、区域设置、支持的日期范围、初始日期以及天、月和年的自定义格式化程序。TVOSPickerViewGregorianCalendarDatePickerDelegate

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许可证下发布。有关详细信息,请参阅许可证

GitHub

查看 Github