如何在 IOS 的月视图日历上跨多天绘制多日事件矩形?

how to draw multi-day event rectangles across multiple days on a month-view calendar on IOS?

在 IOS 上的月视图日历上,建议使用什么方法来绘制跨多天的多日事件矩形?牢记目标是 drag/drop 日历上的活动栏

我想到了两个选项,但我不确定哪个最好(或者如果有另一个)是:

  1. 使用 UICollectionView(使用 UICollectionViewFlowLayout)- 但是这样一来,每个多日活动就不会有一个对象吗?即每个多日事件都需要在每天的单元格中有效地单独绘制其自身的一部分,并确保绘图线向上显示为单个条形图

  2. 自己画日历,这样你就可以放多天的矩形条,方便拖放,但是这样你就得不到 UICollectionView 关联的渲染支持继续滚动日历并根据需要滚动 creating/removing 个单元格?

任何 suggestions/direciton 欢迎。

我建议如下:

  • 创建您自己的表示一天的 collectionviewcell(您可能 已经这样做了)。
  • 在单元格中添加一个 'events' 属性 所有开始、结束或包括这一天的事件(您在 collectionView:cellForItemAtIndexPath: 中设置)。
  • 你必须决定是自己绘制矩形(覆盖 drawRect)还是 添加一个视图(例如 imageView,...)。无论如何:有 4 个场景:

    1. 活动开始于一个单元格,结束于另一个单元格
    2. 活动开始于单元格,结束于单元格
    3. 活动开始于另一个单元格,结束于本单元格
    4. 事件在单元格之前开始,在单元格之后结束

针对每个场景,绘制相应的图形或添加相应的视图。如果你使用纯色矩形/视图,这很容易,如果矩形有边框或圆角,你必须为每个场景绘制不同的矩形。

如果您拖动事件,只需调整事件的日期并确保将事件从/添加到相应的单元格并重新绘制单元格。

'events' 属性 的另一种(可能更简单)方法可能是,单元可以从事件管理器之类的东西查询相应的事件。