Fastis 3.2.0

Fastis 3.2.0

Ilya Kharlamov 维护。



 
依赖项
JTAppleCalendar~> 8.0.0
PrettyCards~> 1.0.0
 


Fastis 3.2.0

Fastis

SwiftMP compatible CocoaPods compatible Swift Xcode License

Fastis 是一个全可定制的 UI 组件,用于选择日期和范围,它是由 JTAppleCalendar 库创建的。

要求

  • iOS 13.0+
  • Xcode 11.0+
  • Swift 5.0+

特性

  • 灵活的定制
  • 日期和范围的快捷键
  • 单个日期和日期范围模式

Android 实现

安装

CocoaPods

CocoaPods 是一个用于 Cocoa 项目的依赖管理器。您可以使用以下命令安装它

$ gem install cocoapods

要使用 CocoaPods 将 Fastis 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '13.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'Fastis', '~> 2.0'
end

然后,运行以下命令

$ pod install

Swift 包管理器

Swift 包管理器 是一个用于自动化 Swift 代码分发的工具,并集成到 swift 编译器中。

一旦您设置完毕 Swift 包,将 Fastis 添加为依赖项就像将其添加到 Package.swiftdependencies 值一样简单。

dependencies: [
    .package(url: "https://github.com/simla-tech/Fastis.git", .upToNextMajor(from: "2.0.0"))
]

Carthage

Carthage 不受支持。

手动

如果您不想使用上面提到的任何一个依赖项管理器,您可以手动将Fastis集成到您的项目中。

用法

快速开始

import Fastis

class MyViewController: UIViewController {

    func chooseDate() {
        let fastisController = FastisController(mode: .range)
        fastisController.title = "Choose range"
        fastisController.maximumDate = Date()
        fastisController.allowToChooseNilDate = true
        fastisController.shortcuts = [.today, .lastWeek]
        fastisController.doneHandler = { resultRange in
            ...
        }
        fastisController.present(above: self)
    }

}

单选和范围模式

如果您想获取单个日期,则必须使用 Date 类型

let fastisController = FastisController(mode: .single)
fastisController.initialValue = Date()
fastisController.doneHandler = { resultDate in
    print(resultDate) // resultDate is Date
}

如果您想获取日期范围,则必须使用 FastisRange 类型

let fastisController = FastisController(mode: .range)
fastisController.initialValue = FastisRange(from: Date(), to: Date()) // or .from(Date(), to: Date())
fastisController.doneHandler = { resultRange in
    print(resultRange) // resultDate is FastisRange
}

配置

FastisController具有以下默认配置参数

var shortcuts: [FastisShortcut<Value>] = []
var allowsToChooseNilDate: Bool = false
var dismissHandler: (() -> Void)? = nil
var doneHandler: ((Value?) -> Void)? = nil
var initialValue: Value? = nil
var minimumDate: Date? = nil
var maximumDate: Date? = nil
var selectMonthOnHeaderTap: Bool = true
var allowDateRangeChanges: Bool = true
  • shortcuts- 快捷键数组。默认值为 []。请参阅 快捷键 部分
  • allowsToChooseNilDate- 允许选择 nil 日期。如果设置为 true,则完成按钮始终启用。默认值为 false.
  • dismissHandler - 在取消显示后执行的代码块。默认值为 nil
  • doneHandler - 点击“完成”按钮后执行的代码块。默认值为 nil
  • initialValue - 默认选定的初始值。默认值为 nil
  • minimumDate - 最小选择日期。小于当前日期的日期将标记为不可用。默认值为 nil
  • maximumDate - 最大选择日期。大于当前日期的日期将标记为不可用。默认值为 nil
  • selectMonthOnHeaderTap (仅适用于 .range 模式)- 如果想通过点击月份选择日期范围,将此变量设置为 true。默认值为 true
  • allowDateRangeChanges (仅适用于 .range 模式)- 如果想禁用日期范围更改,将此变量设置为 false。选择范围后的下一次点击将开始新的范围选择。默认值为 true

快捷键

使用快捷键可以快速选择预设日期或日期范围。默认情况下,.shortcuts 为空。如果没有提供任何快捷键,则底部容器将隐藏。

Fastis为每种模式提供了一些预设的快捷键。

  • 对于 .single.today.tomorrow.yesterday
  • 对于 .range.today.lastWeek.lastMonth

此外,您还可以创建自己的快捷键。

var customShortcut = FastisShortcut(name: "Today") {
    let now = Date()
    return FastisRange(from: now.startOfDay(), to: now.endOfDay())
}
fastisController.shortcuts = [customShortcut, .lastWeek]

自定义

Fastis可以全局或局部自定义。 FastisConfig 包含一些部分:

  • calendar - 用于渲染UI的基本日历。默认值是 .current
  • controller - 基础视图控制器(cancelButtonTitledoneButtonTitle等)
  • monthHeader - 月份标题
  • dayCell - 天部分(选择参数、字体等)
  • weekView - 带有星期名称的顶部标题视图
  • currentValueView - 当前值视图外观(清除按钮、日期格式等)
  • shortcutContainerView - 包含快捷键的底部视图
  • shortcutItemView - 底部视图中的快捷键项

要自定义应用程序中所有Fastis控制器,请使用 FastisConfig.default

FastisConfig.default.monthHeader.labelColor = .red

要自定义特定的FastisController实例

var customConfig = FastisConfig.default
customConfig.controller.dayCell.dateLabelColor = .blue
let fastisController = FastisController(mode: .range, config: customConfig)

鸣谢

许可证

Fastis 在 MIT 许可证下发布。详情请参阅 LICENSE。