在您的 Swift 文件中创建一个 Date
变量,用于保存从日期选择器中选择的日期。
@State private var selectedDate: Date = Date()
如果您想在特定日期显示图像,请创建一个 specialDates 数组。此步骤是可选的。如果您喜欢没有特殊日期的标准日历,则可以跳过此步骤。
let specialDates: [SpecialDate] = [
// Your special dates and images here
]
将 FXDatePicker 添加到您的视图中。您可以选择是否使用 specialDates。
使用 specialDates 的示例
FXDatePickerView(selectedDate: $selectedDate, specialDates: specialDates)
不使用 specialDates 的示例
FXDatePickerView(selectedDate: $selectedDate)
FXDatePicker
还支持在指定的范围内选择日期。 这对于需要将日期选择限制在特定时间段内的应用程序特别有用。 以下是如何使用不同类型的日期范围的 FXDatePicker
的示例。
要使用闭合范围(包含开始日期和结束日期的范围),请首先创建一个 ClosedRange<Date>
变量。 例如,要为当前月份创建一个范围
private var closeRange: ClosedRange<Date> {
let calendar = Calendar.current
let startOfToday = calendar.startOfDay(for: Date())
guard let endOfRange = calendar.date(bySetting: .day, value: 18, of: startOfToday) else {
fatalError("Could not create start or end date for range")
}
return startOfToday...endOfRange
}
然后,使用此范围初始化 FXDatePicker
FXDatePickerView(selectedDate: $selectedDate, specialDates: specialDates, in: cloaseRange)
对于从特定日期开始并无限期延伸到未来的范围
FXDatePickerView(selectedDate: $selectedGregorianDate, specialDates: specialDates, in: Date()...)
对于过去任何时间开始并在特定日期结束的范围
FXDatePickerView(selectedDate: $selectedGregorianDate, specialDates: specialDates, in: ...Date())
通过 specialDates
数组,您可以向日历中的特定日期添加自定义标记。 您可以使用自定义图像或 SF Symbols 来突出显示这些日期。 每个特殊日期都使用其类型 (SpecialDateType
) 定义,该类型可以是用于图像的 ImageType
或用于 SF Symbols 的 SFSymbolsType
。 以“日/月/年”格式格式化日期。
要使用 SF Symbol 标记日期,请创建一个 SpecialDate
实例,并将 dateString
和 dateType
设置为 .sfSymbols
。 提供日期、符号的名称及其颜色
SpecialDate(dateString: "2/1/2024",
dateType: .sfSymbols(SFSymbolsType(imageName: "airplane.departure",
color: .blue)))
]
在上面的示例中,蓝色的飞机起飞符号将出现在 2024 年 1 月 2 日。
对于自定义图像,请将 dateType 设置为 .image,并提供日期以及图像的名称
SpecialDate(dateString: "13/1/2024",
dateType: .image(ImageType(imageName: "home")))
FXDatePickerView(selectedDate: $selectedDate, specialDates: specialDates)
.calenderType(.hijri(.islamicUmmAlQura))
默认为 .gregorian.
对于伊斯兰历,您需要指定日历的类型。 在沙特阿拉伯,默认为 .islamicUmmAlQura。 但是,您可以从多种伊斯兰历类型中进行选择,例如 .islamic、.islamicCivil 或 .islamicTabular。
设置不同伊斯兰历类型的示例
.calenderType(.hijri(.islamicCivil))
适应当地月亮观测:伊斯兰历基于农历周期,其日期可能因月亮观测而异。 这种变化有时可能需要将日历调整一天左右。
用户的灵活性:建议允许用户在您的应用程序中更改伊斯兰历的类型。 这种灵活性可以适应地区差异和月亮观测实践中的个人偏好,确保您的应用程序对于不同的用户群保持相关性和实用性。
使用 datePickerTheme 自定义 DatePicker 的主题。 例如
FXDatePickerView(selectedDate: $selectedDate, specialDates: specialDates)
.datePickerTheme(main:
.init(
accentColor: Color(uiColor: UIColor(red: 0.23, green: 0.80, blue: 0.81, alpha: 1.00)),
monthTitle: .white,
daysName: Color(uiColor: UIColor(red: 0.45, green: 0.48, blue: 0.48, alpha: 1.00)),
daysNumbers: Color(uiColor: UIColor(red: 0.83, green: 0.84, blue: 0.84, alpha: 1.00)),
previousDaysNumber: Color(uiColor: UIColor(red: 0.44, green: 0.47, blue: 0.47, alpha: 1.00)),
backgroundStyle: .color(Color(uiColor: UIColor(red: 0.22, green: 0.25, blue: 0.25, alpha: 1.00)))
)
backgroundStyle
接受 Color 或任何类型的渐变,例如使用 radialGradient 作为 backgroundColor
FXDatePickerView(selectedDate: $selectedDate, specialDates: specialDates)
.datePickerTheme(main:
.init(
accentColor: Color(UIColor(red: 0.82, green: 0.26, blue: 0.42, alpha: 1.00)),
monthTitle: Color(UIColor(red: 0.86, green: 0.87, blue: 0.88, alpha: 1.00)),
daysName: Color(UIColor(red: 0.80, green: 0.80, blue: 0.83, alpha: 1.00)),
daysNumbers: Color(UIColor(red: 0.83, green: 0.83, blue: 0.87, alpha: 1.00)),
previousDaysNumber: Color(UIColor(red: 0.66, green: 0.66, blue: 0.69, alpha: 1.00)),
backgroundStyle:
.radialGradient(
Gradient(colors:
[Color(UIColor(red: 0.19, green: 0.19, blue: 0.22, alpha: 1.00)),
Color(UIColor(red: 0.11, green: 0.11, blue: 0.14, alpha: 1.00))
]
),
center: .center,
startRadius: 1,
endRadius: 300)
)
)
默认主题具有白色背景和蓝色强调色。 根据您的喜好调整颜色或渐变,以获得个性化的 DatePicker 外观。
hideMarkers()
修饰符允许您将 FXDatePickerView
用作常规日历,而不显示任何特殊日期标记。 如果您想要更简洁的外观,或者在某些用例中不需要特殊日期指示器,这将特别有用。
示例 要应用此修饰符,只需将 .hideMarkers()
链接到您的 FXDatePickerView
实例。 这是你可以做到的
FXDatePickerView(selectedDate: $selectedDate, specialDates: specialDates)
.hideMarkers()
这是应用 hideMarkers() 修饰符后的外观
使用此修饰符,FXDatePickerView 将呈现,而不显示与 specialDates 相关的任何标记。 这使日历视图保持简单,并专注于基本的日期选择功能。
.disableSwipe()
修饰符与 FXDatePickerView
一起使用,用于禁用滑动功能。 这在您希望防止用户通过滑动来更改日期的情况下特别有用,从而确保通过其他方式(如按钮或外部控件)控制日期导航。
示例 要应用此修饰符,只需将 .disableSwipe()
链接到您的 FXDatePickerView
实例。 这是你可以做到的
FXDatePickerView(selectedDate: $selectedDate, specialDates: specialDates)
.disableSwipe()
在此示例中,FXDatePickerView
将不再响应用于日期导航的滑动操作,用户将需要使用 UI 中提供的按钮来更改所选日期。
.hideDatePicker()
修饰符与 FXDatePickerView
一起使用,用于隐藏点击月份标题时使用 PickerView 视图更改月份/年份的功能。
要应用此修饰符,只需将 .hideDatePicker()
链接到您的 FXDatePickerView
实例。 这是你可以做到的
FXDatePickerView(selectedDate: $selectedDate, specialDates: specialDates)
.hideDatePicker()
此修饰符隐藏了在 FXDatePickerView 中点击月份标题时负责更改月份或年份的 UI 元素。
dependencies: [
.package(url: "https://github.com/X901/FXDatePicker.git")
]