Mijick Header

Mijick GitHub Mijick Twitter Mijick Mail Separator


CalendarView Logo

日历视图

在短时间内创建完全可定制的日历。保持你的代码简洁。

尝试我们准备的演示 | 路线图 | 提出新功能


SwiftUI logo Platforms: iOS, iPadOS, macOS, tvOS Current Version License: MIT

Made in Kraków Stargazers

Calendar Example 1 Calendar Example 2 Calendar Example 3 Calendar Example 4


CalendarView 是一个免费的开源库,专为 SwiftUI 设计,它使创建日历的过程更加容易和简洁。


入门

✋ 要求

平台 最低 Swift 版本
iOS 14+ 5.0
iPadOS 14+ 5.0
macOS 11+ 5.0
watchOS 7+ 5.0

⏳ 安装

Swift 包管理器

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

一旦你设置好了你的 Swift 包,将 CalendarView 添加为依赖项就像将其添加到你的 Package.swiftdependencies 值中一样简单。

dependencies: [
    .package(url: "https://github.com/Mijick/CalendarView.git", branch(“main”))
]

Cocoapods

Cocoapods 是 Swift 和 Objective-C Cocoa 项目的依赖管理器,可帮助优雅地扩展它们。

安装步骤

    pod init
    pod 'MijickCalendarView'
    pod install

用法

1. 调用初始化器

要声明一个 CalendarView,请调用构造函数

struct ContentView: View {
    @State private var selectedDate: Date? = nil
    @State private var selectedRange: MDateRange? = .init()

    var body: some View {
        MCalendarView(selectedDate: $selectedDate, selectedRange: $selectedRange)
    }
}

2. 自定义日历

你的 MCalendarView 可以通过在初始化器内部调用 configBuilder 进行自定义

struct ContentView: View {
    @State private var selectedDate: Date? = nil
    @State private var selectedRange: MDateRange? = .init()

    var body: some View {
        MCalendarView(selectedDate: nil, selectedRange: $selectedRange) {
            $0
                (...)
                .dayView(NewDayView.init)
                .firstWeekday(.wednesday)
                .monthLabelToDaysDistance(12)
                .weekdaysView(NewWeekdaysView.init)
                (...)
        }
    }
}

3. 自定义 WeekdaysView / WeekdayLabel / MonthLabel / DayView

每个日历元素都可以通过继承协议来创建你自己的视图来轻松定制(查看演示项目 了解更多详情)。


尝试我们的演示

通过克隆我们创建的项目来亲身体验它是如何工作的

许可证

CalendarView 在 MIT 许可证下发布。 详细信息请参阅 LICENSE



我们的其他开源 SwiftUI 库

PopupView - 最强大的弹出窗口库,允许你呈现任何弹出窗口
NavigationView - 更简单、更清晰的应用程序导航方式
GridView - 毫不费力地布局你的数据
CameraView - 最强大的 CameraController。 专为 SwiftUI 设计
Timer - Timer 的现代 API