VDKit
描述
此仓库包含对 Foundation、UIKit 和 SwiftUI 有用的扩展
使用
链式操作
将 @dynamicMemberLookup
与 KeyPath
和 callAsFunction
(或下标)组合可以为单个表达式更改对象
let label = UILabel().chain
.text("Text")
.textColor(.red)
.font(.system(24))
.apply()
日期扩展
Date
结构体提供的功能非常有限,任何与日期相关的操作都必须通过 Calendar
以非常不直观、复杂且难以记住的方式实现。为了简化日期操作,这个库提供了一个简单直观的语法。
一些示例
let afterTomorrow: Date = .today + 2.days
//or .today + .days(2)
//or Date.today.adding(2 * .day)
let difference = date2 - date1
let daysBetweenDates = difference.days
//or date2.interval(of: .day, from: date1)
let weeksBetweenDates = difference.weeks
let hours = Date().component(.hour)
//or Date().hour()
let someDate = Date(year: 1994, month: 10, day: 4)
let startOfMonth = Date().start(of: .month)
let lastMonth = Date().end(of: .year)
let lastDay = Date().end(of: .year, accuracy: .day)
let nextYear = Date().next(.year)
let nextLeapYear = Date().nearest([.month: 2, .day: 29], in: .future)?.start(of: .year)
let monthLenght = Date().count(of: .day, in: .month)
for month in (date1...date2).each(.month) {...}
let weekdayName = Date().name(of: .weekday)
if let date = Date(from: dateString, format: "dd.MM.yyyy") {...}
let dateString = Date().string("dd.MM.yyyy")
let iso860String = Date().iso860
let defaultDateString = Date().string(date: .long, time: .short)
let relativeDateString = Date().string("dd.MM.yyyy",
relative: [
.day(0): "Today, HH:mm",
.day(-1): "Yesterday",
.week(0): "EEEE",
.year(0): "dd.MM"
]
)
任何函数都包含带有默认值的额外参数,例如
calendar: Calendar = .default
locale: Locale = .default
timezone: TimeZone = .default
其中 Calendar.default
、Locale.default
和 TimeZone.default
- 这是您可以更改的静态变量。因此,您可以在每个函数中使用自定义 Calendar
let dayOfMonth = Date().position(of: .day, in: .month, calendar: customCalendar)
或者您可以为所有函数设置自己定义的 default
值
Calendar.default = customCalendar
安装
将以下行添加到您的 Podfile 中
pod 'VD'
然后首先从 podfile 目录运行 pod update
创建一个 Package.swift
文件。
// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "SomeProject",
dependencies: [
.package(url: "https://github.com/dankinsoid/VDKit.git", from: "1.109.0")
],
targets: [
.target(name: "SomeProject", dependencies: ["VDKit"])
]
)
$ swift build
作者
dankinsoid, [email protected]
许可证
VDAnimation 以 MIT 许可证可用。有关更多信息,请参阅 LICENSE 文件。