SwiftUI 是一个使用 SwiftUI 框架创建日历视图的组件。通过 SwiftDate 库用纯 SwiftUI 构建 Calendar,用于计算日期。SwiftUICalendarView 是一个用于在 SwiftUI 中构建和展示简单日历界面的 Swift 包。该库提供了一个简单的方法将日历集成到您的应用中。

要将 SwiftUICalendarView 集成到您的项目中,请将 GitHub URL 添加到您的 Package.swift 文件中的依赖部分
dependencies: [
.package(url: "https://github.com/iletai/SwiftUICalendarView.git", from: "1.0.4"),
],
targets: [
.target(name: "YourTarget", dependencies: ["CalendarView"]),
]
- 日历模式:周、月、年
- 第一周第一天
- 显示日期
- 固定标头日历
- 允许自定义所有者日历日期视图
import SwiftUI
import CalendarView
import SwiftDate
struct ContentView: View {
@State var isShowHeader = false
@State var isShowDateOut = false
@State var firstWeekDate = 1
@State var viewMode = CalendarViewMode.year
@State private var selectedDate = Date()
@State var listSelectedDate = [Date]()
var body: some View {
VStack {
CalendarView(
date: selectedDate
, dateView: { date in
VStack {
Text(date.dayName)
.font(.footnote)
.fontWeight(.semibold)
.foregroundColor(
Calendar.current.isDateInWeekend(date) ? .red : .black
)
}
.frame(maxWidth: .infinity)
.frame(height: 30)
.background(listSelectedDate.contains(date) ? .cyan : .clear)
}, headerView: { date in
VStack {
Text(date.weekDayShortName)
.font(.footnote)
.fontWeight(.bold)
.foregroundColor(
Calendar.current.isDateInWeekend(date) ? .red : .black
)
}
}, dateOutView: { date in
Text(DateFormatter.day.string(from: date))
.font(.footnote)
.foregroundColor(.gray)
},
onSelectedDate: onSelectedDate
)
您可以使用像 accentColor、selectedDateColor 和 disabledDateColor 这样的属性自定义日历的界面...
.enableHeader(isShowHeader)
.enableDateOut(isShowDateOut)
.firstWeekDay(firstWeekDate)
.calendarLocate(locale: Locales.vietnamese.toLocale())
.enablePinedView(.sectionHeaders)
.setViewMode(viewMode)
.rowsSpacing(0)
.columnSpacing(0)
.backgroundCalendar(.visible(20, .gray.opacity(0.3)))
.onDraggingEnded {
selectedDate = selectedDate.nextWeekday(.friday)
}
注意
例如使用此存储库,请参阅以下链接了解更多信息:https://github.com/iletai/SwiftUICalendarView/tree/master/CalendarExampleView
如果您发现了一个错误或有一个改进该库的方法,请创建一个问题或提出一个拉取请求。我们欢迎社区贡献。
SwiftUICalendarView 在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE。