通过JTAppleCalendar显示月份和年份作为标题

时间:2017-04-07 23:05:58

标签: ios swift calendar jtapplecalendar

我在我的iOS应用程序中使用JTAppleCalendar但我发现很难实现标题,这些标题显示日历顶部的月份和年份,通常是常规日历。我已按照文档中的说明进行操作,但我仍然觉得很困难,尽管我设法添加“标题”以显示一周的日期,尽管我觉得可能不正确。对于之前已经实现过此库的任何人,我可以获得一些帮助吗?或者您使用的另一个日历有更简单的方法来完成此任务?

我希望屏幕看起来像这样: enter image description here

虽然我现在看起来像这样: enter image description here

文档: 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"
}

1 个答案:

答案 0 :(得分:1)

我认为你让这件事变得非常困难。

您在教程网站上看到的是一个示例,说明如何使用名为title的简单UILabel设置标头。如果您的日历设计不同,则无需完全遵循此操作。只需按照自己的意愿设计即可。

看来你想要的不是UILabel。你想要7个标签;每个代表一周的一天。最简单的方法是在Horizo​​ntal Stackiew中创建7个UILabel。 StackView的间距应设置为full,并应设置为fill equally。然后,您只需单击各个标签并将其对齐设置为中心。

enter image description here

将StackView的约束拉伸到headerView的末尾。 完成。你的S | M | T | W | T | F | S视图是完整的,没有硬编码空格;这是一件坏事。

接下来,您似乎想要另外2个标签。一个用于Month,另一个用于Year。因此,在标题视图中创建这些标签,然后为它们创建outletLets。然后,您可以在以下功能中正确设置它们。

func calendar(_ calendar: JTAppleCalendarView, willDisplaySectionHeader header: JTAppleHeaderView, range: (start: Date, end: Date), identifier: String) {
}