MSCollectionViewCalendarLayout 0.1.5

MSCollectionViewCalendarLayout 0.1.5

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
Released最后发布2015 年 8 月

Eric HoracekEric Horacek 维护。



  • Eric Horacek

简介

MSCollectionViewCalendarLayoutEric HoracekMonospace Ltd. 编写。

MSCollectionViewCalendarLayout 是一个 UICollectionViewLayout 子类,用于显示时间序列数据。它将单元格分成天的列,每个单元格的大小对应于其长度。《MSCollectionViewCalendarLayout》在苹果日历/iCal应用中的“周”视图非常相似。请参阅示例截图以了解其外观。

UICollectionView?

UICollectionView 实在太棒了。如果您不熟悉,请阅读 Matt Thompson 在 NSHipster 上关于它们的 出色的文章。每个人都应该使用它们(是的,甚至可以代替老旧的 UITableView)。这在 iOS 6+ 的采用率超过 90% 的情况下(截至 2013 年 3 月)尤其正确。这是正确的事情。

由于 UICollectionView 是如此出色,因此下面示例中的 UIViewController 极其轻薄——包括空格在内大约有 175 行代码

示例

示例项目查询了 SeatGeek API 查找丹佛,科罗拉多州附近的 1000 场体育活动。使用 MSCollectionViewCalendarLayout 在一个 UICollectionView 中显示这些活动,模仿苹果 iOS 日历应用的外观和感受。要运行,请在 Example 目录中的 Example.xcworkspace 内构建和运行 Example 目标。

屏幕截图

Vertical Layout Horizontal Layout

用法

注销布局

如果更改您的 MSCollectionViewCalendarLayout 的内容,请确保调用 invalidateLayoutCache 方法。这将清除您的 MSCollectionViewCalendarLayout 的内部缓存,允许正确重新填充数据。

分区布局

在iPhone上,MSCollectionViewCalendarLayout默认以垂直方式平铺其日分区。日列标题的行为类似于表格视图,粘附在顶部,直到滚动到下一天为止。在iPad上,日分区以水平方式平铺。此行为由sectionLayoutType属性控制。它的值可以是:

  • MSSectionLayoutTypeHorizontalTile – 日分区以垂直方式平铺。
  • MSSectionLayoutTypeVerticalTile – 日分区以水平方式平铺。

集合视图元素

MSCollectionViewCalendarLayout有九个不同的元素,您应该为UICollectionReusableViewUICollectionViewCell类注册它们。它们是:

  • 事件单元格 (UICollectionViewCell) – 表示您的活动。
  • 日列标题 (UICollectionReusableView) – 包含日期文本,顶部对齐。
  • 时间行标题 (UICollectionReusableView) – 包含时间文本,左对齐。
  • 日列标题背景 (UICollectionReusableView) – 日列标题的背景。
  • 时间行标题背景 (UICollectionReusableView) – 时间行标题的背景。
  • 当前时间指示器 (UICollectionReusableView) – 显示在时间行标题之上,与当前时间对齐。
  • 当前时间水平网格线 (UICollectionReusableView) – 显示在单元格下方,与当前时间对齐。
  • 水平网格线 (UICollectionReusableView) – 显示在单元格下方,与其对应的时间行标题对齐。
  • 垂直网格线 (UICollectionReusableView) – 显示在单元格下方,与其对应的日列标题对齐。

如果您认为还需要更多此类元素,请毫不犹豫地通过pull request添加它们。要查看这是如何实现的,请查看示例。

我可以调用performBatchUpdates:completion:来使东西动画吗?

不要这样做。这不会正确工作,并且是一个“充满痛苦的问题”。

要求

需要iOS 6.0+和ARC。

贡献

我们欢迎分支、补丁和其他反馈。

许可证

版权所有 (c) 2013 Monospace Ltd. 保留所有权利。

此代码在MIT许可证的条款和条件下分发。

在此,免费提供给任何获取此软件及其相关文档副本(以下简称“软件”)的人,以在不受限制的情况下处理该软件,包括但不限于以下权利:使用、复制、修改、合并、发布、分发、再许可和/或出售该软件的副本,并允许收受人根据以下条件使用该软件:

上述版权声明和本许可声明应包含在软件的所有副本或其重大部分的副本中。

该软件按“原样”提供,无论明示还是暗示,均不提供任何保证,包括但不限于适销性、针对特定用途的适用性和非侵权性保证。在任何情况下,作者或版权持有人不应对任何索赔、损害或其他责任负责,无论是否由于合同、侵权或其他行为引起,源于、产生于或与该软件或其使用或其他交易有关。

Bitdeli Badge