通过 JTAppleCalendar 将月份和年份显示为 header
Showing Months and year as header through JTAppleCalendar
我在我的 iOS 应用程序中使用 JTAppleCalendar,但我发现很难实现 headers 来像传统日历一样在日历顶部显示月份和年份。我已经按照文档中的说明进行操作,但我仍然觉得很难,尽管设法添加 'headers' 来显示星期几,尽管我觉得可能不正确。对于以前实施过这个库的人,我能得到一些帮助吗?或者也许您使用过的另一个日历可以更简单地完成此操作?
我希望屏幕看起来像这样:
虽然我的目前看起来像这样:
文档:
https://patchthecode.github.io/Headers/
我是这样实现星期几的:
// This sets the height of your header
func calendar(_ calendar: JTAppleCalendarView, sectionHeaderSizeFor range: (start: Date, end: Date), belongingTo month: Int) -> CGSize {
return CGSize(width: 200, height: 50)
}
// This setups the display of your header
func calendar(_ calendar: JTAppleCalendarView, willDisplaySectionHeader header: JTAppleHeaderView, range: (start: Date, end: Date), identifier: String) {
let headerCell = (header as? PinkSectionHeaderView)
headerCell?.title.text = "S M T W T F S"
}
我认为你只是把它变得比应该的更难了。
您在教程网站上看到的是一个示例,说明如何设置一个 header 并在其上添加一个名为 title
的简单 UILabel。如果您的日历设计不同,则不必完全遵循此要求。想怎么设计就怎么设计。
看来你要的不是UILabel。你想要 7 个标签;每个代表一周中的一天。最简单的方法就是在 Horizontal Stackiew 中创建 7 个 UILabel。 StackView 的间距应设置为 full
并应设置为 fill equally
。然后您所要做的就是单击各个标签并将它们的对齐方式设置为居中。
使 StackView 的约束延伸到 headerView 的末端。
完毕。您的 S|M|T|W|T|F|S 视图是完整的,无需对空格进行硬编码;这是一件坏事。
接下来您似乎还需要另外 2 个标签。一个用于 Month
,另一个用于 Year
。因此,在 header 视图中创建这些标签,然后为它们创建 outletLets。然后就可以在下面的函数中进行适当的设置了。
func calendar(_ calendar: JTAppleCalendarView, willDisplaySectionHeader header: JTAppleHeaderView, range: (start: Date, end: Date), identifier: String) {
}
我在我的 iOS 应用程序中使用 JTAppleCalendar,但我发现很难实现 headers 来像传统日历一样在日历顶部显示月份和年份。我已经按照文档中的说明进行操作,但我仍然觉得很难,尽管设法添加 'headers' 来显示星期几,尽管我觉得可能不正确。对于以前实施过这个库的人,我能得到一些帮助吗?或者也许您使用过的另一个日历可以更简单地完成此操作?
我希望屏幕看起来像这样:
虽然我的目前看起来像这样:
文档: https://patchthecode.github.io/Headers/
我是这样实现星期几的:
// This sets the height of your header
func calendar(_ calendar: JTAppleCalendarView, sectionHeaderSizeFor range: (start: Date, end: Date), belongingTo month: Int) -> CGSize {
return CGSize(width: 200, height: 50)
}
// This setups the display of your header
func calendar(_ calendar: JTAppleCalendarView, willDisplaySectionHeader header: JTAppleHeaderView, range: (start: Date, end: Date), identifier: String) {
let headerCell = (header as? PinkSectionHeaderView)
headerCell?.title.text = "S M T W T F S"
}
我认为你只是把它变得比应该的更难了。
您在教程网站上看到的是一个示例,说明如何设置一个 header 并在其上添加一个名为 title
的简单 UILabel。如果您的日历设计不同,则不必完全遵循此要求。想怎么设计就怎么设计。
看来你要的不是UILabel。你想要 7 个标签;每个代表一周中的一天。最简单的方法就是在 Horizontal Stackiew 中创建 7 个 UILabel。 StackView 的间距应设置为 full
并应设置为 fill equally
。然后您所要做的就是单击各个标签并将它们的对齐方式设置为居中。
使 StackView 的约束延伸到 headerView 的末端。 完毕。您的 S|M|T|W|T|F|S 视图是完整的,无需对空格进行硬编码;这是一件坏事。
接下来您似乎还需要另外 2 个标签。一个用于 Month
,另一个用于 Year
。因此,在 header 视图中创建这些标签,然后为它们创建 outletLets。然后就可以在下面的函数中进行适当的设置了。
func calendar(_ calendar: JTAppleCalendarView, willDisplaySectionHeader header: JTAppleHeaderView, range: (start: Date, end: Date), identifier: String) {
}